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
本身的接口,直到您知道您拥有的节点类型。
我 运行 在我的项目中遇到了一个问题,其中 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
本身的接口,直到您知道您拥有的节点类型。