应该使用什么方法来读取JavaScript中的XML数据?

时间:2017-07-06 19:46:39

标签: javascript xml internet-explorer-11

我在项目中遇到了一个问题,其中XML节点的值在IE11中作为undefined返回,而在所有其他浏览器(包括Edge)中返回它们作为预期的有效值。

要获取我使用.innerHTML的值,经过一些研究,我发现.innerHTML在IE11中不起作用,从技术上讲它不应该用于阅读首先是XML节点值。

我找到了一些对我来说都很讨厌的解决方案,因为他们建议使用不同的方法来读取不同浏览器的XML数据(也就是IE11和其他所有内容)。我认为必须有一种标准的方法来读取适用于所有浏览器的XML数据,因为解析XML非常常见,而不是在不同浏览器中有不同实现的模糊实践。

我终于找到了一个视频,其中一个人使用.firstChild.data来解释读取XML节点值。我已经在我的项目中实现了它,它似乎在所有浏览器中都能正常工作。这是我遇到这种方法的唯一时间。我使用.text().innerHTML.textContent(对于IE11)看了我建议的其他地方。

是否有理由不使用.firstChild.data或不使用其他方法,是否有其他更适合跨浏览器兼容的方法?

1 个答案:

答案 0 :(得分:1)

如果firstChildtext node,那么您希望使用nodeValue来访问其文本内容。另请参阅textContent属性。

但是,firstChild可能不是文本节点,具体取决于您的数据。例如,给定这个XML文档...

<root><a><b>foo</b> bar</a></root>

... firstChild元素的<a>Element,文本节点为子节点。因此,您不希望使用firstChild来查找文本节点。

此外,data特定于CharacterData接口。如果您确定自己拥有Text节点,则可以使用此属性。否则,我个人会使用Node本身的接口,直到你知道你有什么类型的节点。