我如何使用jQuery来解析XML

Mic*_*llo 2 xml jquery

这个(或它的一些变体)由我的PHP脚本输出请注意,某些标签在不同的上下文中使用相同的名称:

<conversations>
  <status>1</status>
  <conversation>
    <open>0</open>
    <status>1</status>
    <priority>1</priority>
  </conversation>
  <conversation>
    <open>1</open>
    <status>0</status>
    <priority>0</priority>
  </conversation>
</conversations>

<messages>
  <status>1</status>
  <message>
    <msgID>165</msgID>
    <userID>16></userID>
    <msg>How do I parse this?</msg>
  </message>
</messages>
Run Code Online (Sandbox Code Playgroud)

首先,我需要循环并显示每个对话的按钮.然后我需要循环显示所选对话的所有新消息.我可以自己解决逻辑问题.我只是不知道如何解析(爬上)XML.谢谢你的帮助!

编辑:如果我说$("status",xml).text()我怎么知道正在引用哪个<status>标签?我需要区分<conversations>和<messages>.

use*_*716 5

  • .filter() 过滤顶层的节点,
  • .children() 使用可选的选择器来获取顶级人员的一组直接子项
  • .find() 使用选择器获取当前顶级水平下任意级别的一组节点
  • .each() 迭代当前顶级的那些

示例: http ://jsfiddle.net/MTPdw/1/

var $xml = $(xml);

var conversations = $xml.filter('conversations');

conversations.children('conversation').each(function() {
    alert($(this).find('status').text());
});
Run Code Online (Sandbox Code Playgroud)

你做的时候:

$("status",xml).text()
Run Code Online (Sandbox Code Playgroud)

......它被转换成这个:

$(xml).find("status").text();
Run Code Online (Sandbox Code Playgroud)

因为顶层的节点是<conversations><messages>,它正在搜索作为其中任何<status>一个的后代的所有元素.在.text()随后返回其累积的文本内容.