使用/ out parseXML在jQuery中解析XML?

时间:2012-04-19 12:09:40

标签: jquery xml parsexml

两者都在运作......为什么我需要parseXML

var x='<a>\
<item k="1" p1="aaa" />\
<item k="2" p1="bbb" />\
</a>';


alert($($.parseXML(x)).find("item[k='1']").attr('p1')); //aaa

alert($(x).find("item[k='1']").attr('p1')); //aaa

http://jsbin.com/ukahum/2/edit

1 个答案:

答案 0 :(得分:3)

$.parseXML函数将在IE中使用DOMParser或类似内容。

因此它将返回一个真正的xml对象,因此它将包含诸如xml版本($.parseXML(xml).xmlVersion)之类的内容。

如果你有这样的xml:

<?xml version="1.0" encoding="UTF-8" ?>
<ok>
    <yes>true</yes>
</ok>

并使用你的第二个例子,你会得到这个:

[
<!--?xml version="1.0" encoding="UTF-8" ?-->
, 
<ok>​…​</ok>​
]

因此,如果您现在尝试执行$(xml).find("ok"),它将找不到任何内容,因为ok是父标记,如果您执行$(xml).first(),您将收到评论,我认为不会好的。

但如果您使用的是第一个示例,则会将文档作为父标记:

[#document]

这样您就可以获得ok这样的标记:$($($.parseXML(xml)).find("ok")没有问题,并且不会有评论作为第一个节点。