javascript - 这是使用 jQuery 解析 XML 时的错误吗?

标签 javascript jquery xml

好的,我会尽可能简单地解释这一点;

我正在尝试使用 jQuery 解析通过 Web 服务获得的 XML。一切都在按预期进行,直到我注意到看在上帝的份上我无法解析名为“image”的节点。 长话短说(2 小时后)我注意到,问题出在 TAG NAME 中。显然,“图像”是一个保留字或类似的东西???

这是一个演示;首先,我模拟了 xml,它有“图像”节点,不会显示任何结果。其次,我模拟了相同的 xml,相同的解析,我只是将“image”重命名为“image1”并且它起作用了。 请参阅此处的示例:http://jsbin.com/evinah/1/edit

所以,显然我无法更改 Web 服务,它不在我的域中。如何使用 jQuery 获取“图像”值?

感谢您的回复。

最佳答案

其他答案中已经提到了如何解决问题,但我认为重要的是要解释 image 的“错误”标签。

当您将 XML 字符串传递给 jQuery 时,它会使用浏览器的 native DOM 方法来解析 XML。不过,这些 DOM 方法主要用于解析和处理 HTML。

让我们看看当您创建 root 时会发生什么元素:

> var e = document.createElement('root');
  <root></root>

console.log(e)列出了一堆属性,但最重要的是,这个元素继承自 HTMLUnknownElement ,这是有道理的。

现在让我们创建一个 image元素:

> var e = document.createElement('image');
  <img>

呃? <image></image>在哪里?结果是 image is an alias for img .新元素继承自 HTMLImageElement .

你现在可能认为你可以做 .children('img').text() , 但自 img 以来这将不起作用元素不能有后代。浏览器生成的结果结构是:

<root>
    <item>
        <img>
        image link
    </item>
    <item>
        <img>
        image link2
    </item>
</root>

文本节点是 img 的兄弟节点元素,而不是后代。

关于javascript - 这是使用 jQuery 解析 XML 时的错误吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14798449/

相关文章:

javascript - 如何对 jQuery 选择器进行单元测试?

javascript - 隐藏加载失败的图片

javascript - 如何使用 javascript 在下拉菜单的容器内加载页面?

jquery - Typeahead 0.10.2 在 Rails 4/Bootstrap 3 应用程序中不显示建议

javascript - 为什么 style 属性不适用于使用 DOMParser 创建的元素?

javascript - 运行使用 jsonp 获取的脚本标签

javascript - 如何在电子邮件验证期间仅更改正则表达式模式的验证消息

javascript - 'document.prodimage' 为空或不是对象

xml - 从 Flash 中的 swf 文件外部加载 xml 文件

javascript - 使用 jQuery 动态插入 MathML