好的,我会尽可能简单地解释这一点;
我正在尝试使用 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/