gpt4 book ai didi

JavaScript XML 解析

转载 作者:数据小太阳 更新时间:2023-10-29 02:59:14 26 4
gpt4 key购买 nike

有没有一种方法可以在不使用 jquery 或类似库的情况下循环遍历 JavaScript 中 XML 节点的直接子节点?我尝试使用“.childNodes”,但由于某种原因它无法正常工作。 “.childNodes.length”返回一个数字,该数字通常大于直接节点的数量,并且所有标签名称(使用 .tagName)由于某种原因未定义。我知道我的 XML 数据格式正确,因为如果我使用直接子项的标签调用“.getElementsByTagName()”,它会正常工作。我的困境的一些例子:

var root = xmlData.getElementsByTagName("library_geometries")[0]; 

for (i = 0; i < root.childNodes.length; i++) //get all the geometries
{
geom = root.childNodes[i];
alert(geom.tagName);
}

------------------------------------------------------
geom = root.getElementsByTagName("geometry");

for (i = 0; i < geom.length; i++) //get all the geometries
{
alert(geom[i].tagName);
}

第一个根本不起作用,第二个在这个例子中起作用。

最佳答案

这实际上是对 Hemlock 的回答的澄清。我将它放在这里而不是评论他的回答,因为我没有空间在评论中绘制漂亮的 ASCII 艺术。

假设我们有以下 XML:

<a><b></b><c></c></a>

这会生成以下 DOM:

<a>--.
|
<b>
|
<c>

这通常是您所期望的。

假设我们现在有以下 XML:

<a>
<b></b>
<c></c>
</a>

您会认为这会生成相同的 DOM。但按照标准,你就错了。相反,标准要求它生成以下 DOM:

<a>--.
|
"\n "
|
<b>
|
"\n "
|
<c>
|
"\n"

是的,规范说所有这些空白都应该在 DOM 中捕获。几乎所有的 XML 实现都这样做(不仅在浏览器中)。唯一的异常(exception)是 IE(以及 JScript 中的 XML 引擎的扩展),因为 Microsoft 不太关心违反标准。

就我个人而言,这在 99.999% 的情况下是无用的。只有当您尝试实现 XML 代码编辑器时,这才有用。但它在标准中,因此如果浏览器想要符合标准,就需要实现它。

关于JavaScript XML 解析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4708400/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com