JavaScript XML 解析

2023-12-10

有没有一种方法可以在 JavaScript 中循环遍历 XML 节点的直接子节点,而不使用 jquery 或类似的库?我尝试使用“.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 实现都这样做(不仅在浏览器中)。唯一的例外是 IE(以及 JScript 中的 XML 引擎的扩展),因为 Microsoft 不太关心违反标准。

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JavaScript XML 解析 的相关文章

  • 将 DOCTYPE 添加到 Scala XML 的最简单方法?

    我怎样才能在 Scala XML 中制作这个最小的 HTML5 p p 当然 在 Scala 中制作类似 HTML 的 XML 很简单 gt val html p p html scala xml Elem p p 但是 我怎样才能注入DO
  • 使用 xml.etree.ElementTree 更改 xml 元素文本

    给定一个已解析的 xml 字符串 tree xml etree ElementTree fromstring xml string 如何更改 帽子 元素的文本 gt gt gt tree find path to element text
  • 如何制作像Stackoverflow一样的可折叠评论框

    我正在构建一个网站 并且有一个状态更新列表 我希望允许用户为列表中的每个项目撰写评论 但是我正在尝试实现一个类似于堆栈溢出工作方式的用户界面 特别是可折叠的评论表单 列表 用户在其中单击对列表中的特定状态更新添加评论 并且在列表中的该项目下
  • 通过 HTML5 文件和 URL API 正确创建和提供 PDF Blob

    好吧 假设我有文档数据存储在某处 让我们任意取this pdf http www grida no climate ipcc tar wg1 pdf tar 01 pdf 问题 1 我想要做的是对此 URL 进行 AJAX 调用 因为我需要
  • 检测 iframe 内容加载失败

    我可以使用以下命令检测 iframe 的内容何时加载load事件 不幸的是 就我的目的而言 这有两个问题 如果加载页面时出现错误 404 500 等 则永远不会触发加载事件 如果某些图像或其他依赖项加载失败 则会照常触发加载事件 有什么方法
  • 区分单击与 mousedown/mouseup

    我已经阅读了有关这种情况的 stackoverflow 上的几个答案 但没有一个解决方案有效 我尝试根据用户是否单击某个元素或使用 jQuery 将鼠标按住该元素来执行不同的操作 有可能做到这一点吗 onMouseDown 将在按下左侧或右
  • Chrome 扩展程序中的后台脚本到底何时运行?

    在我的 chrome 扩展中 我有一个后台脚本 它将使用XMLHttpRequest note that this code is in the global scope i e outside of any function also n
  • React:React 如何确保在浏览器有机会绘制之后调用 useEffect?

    useLayoutEffect 的文档说 useLayoutEffect 内计划的更新将被刷新 在浏览器有机会绘制之前同步进行 useEffect 的文档说 与 componentDidMount 和 componentDidUpdate
  • JointJS - 处理链接删除点击

    创建链接后 将鼠标悬停在其上会显示红色 X 以将其删除 单击此按钮将触发一系列事件 通过订阅 全部 活动收集 单元格 向下指针 链接 向下指针 cell pointermove x5 似乎可疑 单元格 指针向上 在浏览了文档并花费了太长时间
  • 如何将 HTML 表格转换为 csv 格式?

    是否有 HTML 解析器或某些库可以自动将 HTML 表格转换为 CSV 数据行 Here is http www unix com shell programming scripting 45274 html table csv html
  • 有没有办法在 TypeScript 2+ 中全局添加类型定义?

    我有一堆简单的 ts files 不是项目 即独立的 ts 脚本 他们使用一些 Node js 功能 TypeScript 和节点类型定义通过安装 npm install g typescript npm install g types n
  • Relay 中的嵌套片段数据始终相同

    我是 Relay 新手 并且遇到了片段上嵌套数据的问题 当我在 graphiql 中进行测试时 以下查询返回正确的数据 因此我确信我的架构是正确的 viewer customers name billing address city 但是
  • 对数字和字母元素的数组进行排序(自然排序)

    假设我有一个数组 var arr 1 5 ahsldk 10 55 3 2 7 8 1 2 75 abc huds 我尝试对其进行排序 我得到了类似的东西 1 1 10 2 2 3 5 55 7 75 8 abc ahsldk huds 注
  • CryptoJS 和 Pycrypto 一起工作

    我正在使用 CryptoJS v 2 3 加密 Web 应用程序中的字符串 并且需要在服务器上使用 Python 对其进行解密 因此我使用 PyCrypto 我觉得我错过了一些东西 因为我无法让它工作 这是JS Crypto AES enc
  • Tween JS 基础知识之三个 JS 立方体

    我是 Tween JS 的新手 尝试使用 Tween 制作一个向右移动的简单动画 下面是我在 init 函数中的代码 我使用的是三个 JS var geometry new THREE CylinderGeometry 200 200 20
  • Delphi XE 和 OmniXML:使用 SelectNode()?

    我将以下 XML 片段作为一个更大的 XML 文件的一部分 我正在使用最新的 OmniXML 快照进行处理
  • Javascript - 如何计算数字的平方?

    使用 JavaScript 函数 function squareIt number return number number 当给定数字 4294967296 时 函数返回 18446744073709552000 每个人都知道真正的答案是
  • 我可以防止将 Leaflet 地图平移到世界边缘之外吗?

    有没有办法限制平移到世界边缘之外 在这幅画中 棕色是世界 灰色是虚空 我想让它不可能像这样平移 Leaflet 允许您控制地图抵抗被拖出边界的程度maxBoundsViscosity选项 值 0 到 1 将其设置为最大值会完全禁用拖动出界
  • 使用 stopPropagation() 处理 React 事件委托

    我有一个 React 项目 应该可以放置在任何网站上 我的想法是 我托管一个 javascript 文件 人们放置一个具有特定 ID 的 div 然后 React 在该 div 中进行渲染 到目前为止 除了点击事件之外 这是有效的 这些事件
  • html5 canvas 使用图像作为蒙版

    是否可以使用具有形状的图像作为整个画布或画布内图像的蒙版 我想将图像放置在画布中 并在图像上添加蒙版 然后将其另存为新图像 您可以使用 source in globalCompositeOperation 将黑白图像用作蒙版 首先 将蒙版图

随机推荐

  • android_build.sh 在构建 ffmpeg 库时出错

    我正在尝试构建 ffmpeg 库 下面给出了我的 android build sh bin bash NDK C Users Benzatine Downloads android ndk r10e SYSROOT NDK platform
  • KDB:在两个列表中应用二元函数

    考虑一个函数F x y 生成一个表 我还有两个清单 xList x1 x2 x3 and yList y1 y2 y3 进行简单逗号连接的最佳方法是什么F x1 y1 F x1 y2 F x1 y3 F x2 y1 从而产生一张大桌子 您已
  • 错误“函数参数太少”

    我在以下代码片段中遇到错误 Too few arguments to function showtbl GetTabellen ns 0 passed in abcde folder php php on line 153 and exac
  • C# 中是否有像 Java 中那样的 splitByCharacterType 方法?

    Java中有一个方法按字符类型分割例如 需要一个字符串0015j8 并将其分成 0015 j 8 c 中有这样的内置函数吗 如果不是 我将如何构建一个函数来执行此操作 public static IEnumerable
  • ror 中使用 Paperclip 进行多次上传

    我正在使用回形针上传一栋建筑物的一张照片 http www youtube com watch v KGmsaXhIdjc我已经用这种方法做到了 但我决定将多张照片上传到一栋建筑 我可以使用回形针来做到这一点还是必须更改它并使用 jQuer
  • 两个 int 相乘得到负数

    我目前正在编写一个小下载管理器 当我尝试以百分比计算下载进度时 我得到了一个有趣的输出 这就是我用来计算的 int progress byte counter 100 size System out println byte counter
  • 调用共享WebMethod时出现未知Web方法异常

    我正在尝试在我的网站上实施视图跟踪网络服务 我使用 JavaScript 是因为我想从我的跟踪视图中排除任何搜索机器人 问题是当我尝试使用 jQuery 发布到我创建的 Web 服务时 出现 未知的 Web 方法 错误 document r
  • 在 PHP 中显示更多数字

    假设我有 echo 1 3 它只打印出 0 33333333333333 我可以得到更多的数字吗 Can use bcdiv echo bcdiv 1 3 20 第三个论点 用于设置结果中小数点后的位数 您还可以使用 bcscale 设置所
  • Android 语音 - 如何在 Android 中阅读文本?

    如何在 Android 中读取数据 即将简单的文本字符串转换为语音 语音 有没有一个API可以让我做这样的事情 TextToVoice speaker new TextToVoice speaker Speak Hello World 使用
  • 如何在powershell中获取下一个工作日

    我有以下测试代码 基本上我正在检查文件夹中何时创建新文件 我需要知道如果文件是在下午 4 点之后创建的 则会在下一个工作日显示 目前我的代码显示第二天 但我需要显示下一个工作日 任何帮助 将不胜感激 formatteddate 0 h mm
  • 如何使用 jQuery 找到最高的 z-index

    我有许多具有不同 z 索引的 div 元素 我想找到这些 div 中最高的 z index 我怎样才能实现它 CSS layer 1 z index 1 layer 2 z index 2 layer 3 z index 3 layer 4
  • EXTjs gridfilter:如何在不重新加载存储的情况下清除过滤器?

    在 extjs GridFilters 中 有没有办法在不重新加载存储的情况下清除过滤器 这是要求 网格下面有一个网格 1 和另一个网格 2 grid 1 有一个 id 列表 当单击某个特定 id 时 grid 2 就会填充属于该 id 的
  • 错误:TCP 提供程序:错误代码 0x2746。在Linux中通过终端进行Sql设置期间

    我正在尝试按照文档在我的 Linux 中设置 ms sql 服务器https learn microsoft com pl pl sql linux quickstart install connect ubuntu view sql se
  • SAP .Net Connector 3.0 - 如何从非 SAP 系统发送 IDoc?

    我正在尝试使用 NET 连接器将数据发送到 SAP 系统 我已经能够非常轻松地发送对 RFC 功能模块的调用 但似乎没有任何方法可以直接发送标准 IDoc 这很奇怪 因为 IDocs 应该是与 SAP 对话的标准通信工具 有没有人发现是否
  • 如何在运行时获取和设置 Robot Framework(Ride) 中的默认输出目录

    我想将所有输出文件移动到自定义位置 即基于运行时日期时间创建的运行目录 在 TestSetup 中按日期时间创建输出文件夹 我有函数 Process Output files 它将文件移动到运行文件夹 Run1 Run2 Run3 文件夹
  • 使用输入变量时 Postgres 的运行速度要慢得多

    我在 Postgres 8 3 5 中有一个函数 可以从多个表中选择数据并将结果转储到单个表中 create or replace function test function 2 startdate timestamp enddate t
  • 使用 ImageMagick 和 Rails 进行像素 RGB

    我目前正在使用 PaperClip 和 ImageMagick 上传图像 我想获得图像的平均颜色 所以我这样做 使用 before create 挂钩 def get average color img Magick Image read
  • 使用 Office 365 API 的日历或用户时区

    是否可以通过 Office 365 或 Graph API 获取用户或其日历的时区 我知道您可以从特定事件获取开始和结束时区 但这对我没有帮助 抱歉 我们尚不通过 Office 365 或 Graph REST API 支持此功能 这是我们
  • 如何在 PowerShell 复制脚本中正确过滤多个字符串

    我正在使用来自的 PowerShell 脚本这个答案进行文件复制 当我想使用过滤器包含多种文件类型时 就会出现问题 Get ChildItem originalPath filter htm foreach targetFile htmPa
  • JavaScript XML 解析

    有没有一种方法可以在 JavaScript 中循环遍历 XML 节点的直接子节点 而不使用 jquery 或类似的库 我尝试使用 childNodes 但由于某种原因它无法正常工作 childNodes length 返回一个数字 该数字通