两者都在工作......那我为什么需要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
两者都在工作......那我为什么需要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
该$.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>…</ok>
]
因此,如果您现在尝试执行$(xml).find("ok")
,它将找不到任何东西,因为 ok 是父标签,如果您执行$(xml).first()
,您将收到一条评论,我认为这不会很好。
但如果您使用的是第一个示例,您将获得一个文档作为父标签:
[#document]
所以你可以得到这样的ok
标签:$($($.parseXML(xml)).find("ok")
没有问题,也不会有评论作为第一个节点。