JS怎么遍历XML节点 JavaScript XML DOM遍历方法
发布时间 - 2026-01-22 00:00:00 点击率:次JavaScript遍历XML节点需先用DOMParser解析字符串为Document对象,再通过children、getElementsByTagName或querySelectorAll等API安全访问元素节点,避开文本节点干扰,并可递归遍历全部元素。
JavaScript 中遍历 XML 节点主要依靠原生 XML DOM API,核心是把 XML 字符串解析为 Document 对象,再用类似 HTML DOM 的方式(如 childNodes、、
querySelector 等)访问和遍历节点。关键在于正确解析、识别节点类型、避开文本节点干扰。
解析 XML 字符串为 DOM 文档
浏览器中不能直接用 new DOMParser() 解析不规范的 XML(比如含 BOM、编码错误或自闭合标签写法不当),需确保字符串格式合法:
- 使用
DOMParser解析(现代浏览器支持):const parser = new DOMParser();
const xmlDoc = parser.parseFromString(xmlStr, "application/xml");
解析失败时,xmlDoc.querySelector("parsererror")会存在,可据此判断是否出错。 - IE8/9 需用
ActiveXObject("Microsoft.XMLDOM")(已过时,仅作兼容参考)。
区分节点类型,安全遍历 childNodes
childNodes 包含元素节点、文本节点(换行缩进)、注释节点等。直接遍历易报错或跳过目标节点:
- 只处理元素节点(
nodeType === 1):for (let node of parent.childNodes) {
if (node.nodeType === 1) { /* 处理元素 */ }
} - 更简洁:用
children(只返回元素子节点,忽略文本/注释):for (let elem of parent.children) { /* elem 是 Element 类型 */ }
按标签名或属性快速定位并遍历
比递归遍历更高效,适合有明确结构的 XML:
- 获取所有同名元素:
const items = xmlDoc.getElementsByTagName("item");
Array.from(items).forEach(item => { /* 处理每个 item 元素 */ }); - 用
querySelectorAll支持 CSS 选择器:const titles = xmlDoc.querySelectorAll("book title");
titles.forEach(el => console.log(el.textContent)); - 读取属性值:
const id = item.getAttribute("id");
// 或 el.attributes["id"]?.value
递归遍历全部元素节点(深度优先)
适合结构未知或需统一处理所有元素的场景:
- 简单递归函数示例:
function walkElements(node) {
if (node.nodeType !== 1) return;
console.log(node.tagName, node.textContent.trim());
for (let child of node.children) {
walkElements(child);
}
}
walkElements(xmlDoc.documentElement); - 注意:避免对
textContent直接全量取值——深层嵌套时可能包含大量空白或无关文本,建议用node.innerText(部分浏览器支持)或针对性取子元素内容。
# css
# javascript
# java
# html
# js
# node
# 编码
# 浏览器
# app
# microsoft
# 递归函数
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
美食网站链接制作教程视频,哪个教做美食的网站比较专业点?
Laravel怎么实现模型属性的自动加密
如何破解联通资金短缺导致的基站建设难题?
javascript中的数组方法有哪些_如何利用数组方法简化数据处理
Win11任务栏卡死怎么办 Windows11任务栏无反应解决方法【教程】
如何在橙子建站中快速调整背景颜色?
Laravel的Blade指令怎么自定义_创建你自己的Laravel Blade Directives
高性能网站服务器配置指南:安全稳定与高效建站核心方案
laravel怎么用DB facade执行原生SQL查询_laravel DB facade原生SQL执行方法
如何在Windows服务器上快速搭建网站?
大连 网站制作,大连天途有线官网?
Laravel如何发送系统通知?(Notification渠道示例)
Laravel路由怎么定义_Laravel核心路由系统完全入门指南
🚀拖拽式CMS建站能否实现高效与个性化并存?
如何在云服务器上快速搭建个人网站?
如何在建站主机中优化服务器配置?
html5源代码发行怎么设置权限_访问权限控制方法与实践【指南】
长沙企业网站制作哪家好,长沙水业集团官方网站?
JavaScript如何操作视频_媒体API怎么控制播放
如何用美橙互联一键搭建多站合一网站?
如何在阿里云虚拟机上搭建网站?步骤解析与避坑指南
JavaScript常见的五种数组去重的方式
米侠浏览器网页图片不显示怎么办 米侠图片加载修复
Python结构化数据采集_字段抽取解析【教程】
Win11怎么设置虚拟桌面 Win11新建多桌面切换操作【技巧】
韩国服务器如何优化跨境访问实现高效连接?
Laravel怎么防止CSRF攻击_Laravel CSRF保护中间件原理与实践
佛山企业网站制作公司有哪些,沟通100网上服务官网?
专业型网站制作公司有哪些,我设计专业的,谁给推荐几个设计师兼职类的网站?
浅述节点的创建及常见功能的实现
Laravel如何创建自定义中间件?(Middleware代码示例)
Windows11怎样设置电源计划_Windows11电源计划调整攻略【指南】
Laravel Eloquent:优雅地将关联模型字段扁平化到主模型中
jQuery 常见小例汇总
Laravel如何发送邮件和通知_Laravel邮件与通知系统发送步骤
如何登录建站主机?访问步骤全解析
Laravel如何处理JSON字段的查询和更新_Laravel JSON列操作与查询技巧
成都品牌网站制作公司,成都营业执照年报网上怎么办理?
详解免费开源的.NET多类型文件解压缩组件SharpZipLib(.NET组件介绍之七)
常州企业网站制作公司,全国继续教育网怎么登录?
中山网站制作网页,中山新生登记系统登记流程?
Laravel Docker环境搭建教程_Laravel Sail使用指南
JS中对数组元素进行增删改移的方法总结
Laravel怎么发送邮件_Laravel Mail类SMTP配置教程
怎么用AI帮你为初创公司进行市场定位分析?
如何在阿里云虚拟服务器快速搭建网站?
如何在万网自助建站中设置域名及备案?
网站制作公司哪里好做,成都网站制作公司哪家做得比较好,更正规?
网易LOFTER官网链接 老福特网页版登录地址
Laravel Sail是什么_基于Docker的Laravel本地开发环境Sail入门

