2

两者都在工作......那我为什么需要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

4

1 回答 1

3

$.parseXML函数将DOMParser在 IE 中使用或类似的东西。

因此它将返回一个真正的 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>​…​&lt;/ok>​
]

因此,如果您现在尝试执行$(xml).find("ok"),它将找不到任何东西,因为 ok 是父标签,如果您执行$(xml).first(),您将收到一条评论,我认为这不会很好。

但如果您使用的是第一个示例,您将获得一个文档作为父标签:

[#document]

所以你可以得到这样的ok标签:$($($.parseXML(xml)).find("ok")没有问题,也不会有评论作为第一个节点。

于 2012-04-19T13:37:03.033 回答