【问题标题】:Parsing XML in jQuery with/out parseXML?使用/不使用 parseXML 在 jQuery 中解析 XML?
【发布时间】:2012-04-19 12:09:40
【问题描述】:

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

【问题讨论】:

  • 你看文档是为了 $ 吗?
  • From the docs > XML(从 Ajax 调用返回的数据)可以传递给 $() 函数,因此可以使用 .find() 和其他 DOM 遍历方法检索 XML 结构的各个元素.
  • @ManseUK 好的,谢谢。但是如果我已经没有它,为什么我需要 parseXML...?
  • parseXML 返回一个 XMLDocument - $ 返回一个 jquery 对象 - 它们是不同的

标签: jquery xml parsexml


【解决方案1】:

$.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"),并且不会有评论作为第一个节点。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-12-26
    • 2023-03-28
    • 1970-01-01
    • 2011-02-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-01
    相关资源
    最近更新 更多