这个(或它的一些变体)由我的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>
首先,我需要循环并显示每个对话的按钮。然后我需要循环显示所选对话的所有新消息。我可以自己解决逻辑问题。我只是不知道如何解析(爬上)XML。谢谢你的帮助!
编辑:如果我说$(“status”,xml).text()我怎么知道哪个&lt;状态&gt;标签被引用?我需要区分&lt;对话&gt;和&lt;消息&gt;。
答案 0 :(得分: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());
});
当你做的时候:
$("status",xml).text()
......它被转换成了这个:
$(xml).find("status").text();
由于顶层的节点为<conversations>
和<messages>
,因此它会搜索所有<status>
元素,这些元素都是其中任何一个的后代。然后.text()
返回了累积的文字内容。