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

What method should be used to read XML data in JavaScript?

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

为了获取我使用 .innerHTML 的值,经过一些研究,我发现 .innerHTML 在 IE11 中不起作用,从技术上讲,它不应该用于读取 XML 节点值排在第一位。

我发现了一些对我来说似乎很老套的解决方案,因为它们建议使用不同的方法来读取 XML 不同浏览器(又名 IE11 和其他所有浏览器)的数据。我认为必须有一种标准的方法来读取 XML 数据,该方法适用于所有浏览器,因为解析 XML 非常普遍,而不是一种在不同浏览器中有不同实现的晦涩做法。

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

为什么不使用或不应该使用 .firstChild.data 有什么原因吗?还有其他更可取的跨浏览器兼容方法吗?

如果 firstChild is a text node, then you want to use nodeValue to access its text content. See also the textContent 属性.

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

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

<a> 元素的 firstChild 是一个带有子文本节点的 Element。所以您不想使用 firstChild 来查找文本节点。

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