登录
推荐 文章 Go 技术 课程 下载 专题 AI
首页 >  文章 >  前端

JavaScript解析XML数据方法详解

时间:2026-01-12 12:47:36 460浏览 收藏

在文章实战开发的过程中,我们经常会遇到一些这样那样的问题,然后要卡好半天,等问题解决了才发现原来一些细节知识点还是没有掌握好。今天golang学习网就整理分享《JavaScript如何解析XML数据?》,聊聊,希望可以帮助到正在努力赚钱的你。

JavaScript操作XML主要用DOMParser解析字符串为DOM对象、XMLSerializer序列化回字符串,并配合DOM API查询修改;现代浏览器原生支持,无需额外库。

javascript怎样操作XML数据?_javascript的XML解析器如何使用?

JavaScript 操作 XML 数据主要依靠浏览器内置的 DOMParser(解析 XML 字符串为 DOM 对象)和 XMLSerializer(将 XML DOM 对象序列化为字符串),配合标准 DOM API 进行查询、修改、遍历等操作。现代浏览器均原生支持,无需额外库。

用 DOMParser 解析 XML 字符串

这是最常用的方式,把一段 XML 文本转成可操作的文档对象。

  • 创建 DOMParser 实例,调用 parseFromString(),传入 XML 字符串和 MIME 类型 "text/xml"(或 "application/xml"
  • 若 XML 格式错误,不会抛错,但解析结果的 documentElement 会是 null,建议检查 parseError(仅 IE 支持)或通过 getElementsByTagName("parsererror").length 判断是否出错
  • 示例:

用标准 DOM 方法查询和提取数据

解析后的 xmlDoc 就是一个标准的 XML 文档对象,支持所有 DOM 查询方法。

  • getElementsByTagName("title"):获取所有 </code> 元素(返回 HTMLCollection)</li> <li><code>querySelector("book[id='1'] title")</code>:用 CSS 选择器精准定位</li> <li><code>getAttribute("id")</code> 获取属性值</li> <li><code>textContent</code> 或 <code>firstChild.nodeValue</code> 获取元素文本内容(注意空白文本节点)</li> <li>推荐优先用 <code>querySelector</code> + <code>textContent</code> 组合,简洁可靠</li> </ul><h3>动态创建和修改 XML 文档</h3> <p>可使用 <code>document.implementation.createDocument()</code> 创建空 XML 文档,再用 <code>createElementNS</code>、<code>setAttribute</code>、<code>appendChild</code> 等方法构建结构。</p> <ul><li>创建文档:<code>const doc = document.implementation.createDocument("", "", null);</code></li> <li>添加根元素:<code>const root = doc.createElement("root"); doc.appendChild(root);</code></li> <li>设置命名空间(如需):<code>createElementNS("http://example.com/ns", "item")</code></li> <li>修改后可用 <code>XMLSerializer</code> 转回字符串:<code>new XMLSerializer().serializeToString(doc)</code></li> </ul><h3>注意跨域与安全限制</h3> <p>直接解析本地字符串无限制;但通过 <code>fetch</code> 或 <code>XMLHttpRequest</code> 加载外部 XML 文件时,受同源策略约束。</p> <ul><li>跨域请求需服务端设置 <code>Access-Control-Allow-Origin</code></li> <li>避免用 <code>eval</code> 或 <code>innerHTML</code> 处理不可信 XML,防止注入风险</li> <li>XML 中的实体(如 <code><</code>)会被自动解码,无需手动处理</li> </ul><p>文中关于的知识介绍,希望对你的学习有所帮助!若是受益匪浅,那就动动鼠标收藏这篇《JavaScript解析XML数据方法详解》文章吧,也可关注golang学习网公众号了解相关技术文章。</p> </div> <div class="labsList"> </div> </div> <!-- 最新阅读 --> <div class="contBoxNor"> <div class="contTit"> <div class="tit">相关阅读</div> <a href="/articlelist.html" class="more">更多></a> </div> <ul class="latestReadList"> <li> <div class="info"> <a href="/articlelist/19_new_0_1.html" class="aLightGray" title="文章">文章</a> · <a href="/articlelist/88_new_0_1.html" class="aLightGray" title="前端">前端</a>   |  1年前  |   <a href="javascript:;" class="aLightGray" title="提升">提升</a> <a href="javascript:;" class="aLightGray" title="箭头函数">箭头函数</a> <a href="javascript:;" class="aLightGray" title="函数表达式">函数表达式</a> <a href="javascript:;" class="aLightGray" title="函数声明">函数声明</a> <a href="javascript:;" class="aLightGray" title="Function构造函数">Function构造函数</a> </div> <div class="tit lineOverflow"><a href="/article/207000.html" title="JavaScript函数定义及示例详解" class="aBlack">JavaScript函数定义及示例详解</a></div> <div class="opt"> <span><i class="view"></i>502</span> <span class="collectBtn user_collection" data-id="207000" data-type="article" title="收藏"><i class="collect"></i>收藏</span> </div> </li> <li> <div class="info"> <a href="/articlelist/19_new_0_1.html" class="aLightGray" title="文章">文章</a> · <a href="/articlelist/88_new_0_1.html" class="aLightGray" title="前端">前端</a>   |  4小时前  |   <a href="javascript:;" class="aLightGray" title="智能体">智能体</a> </div> <div class="tit lineOverflow"><a href="/article/621422.html" title="智能体安全引领产业升级——国内AI安全产品市场深度分析" class="aBlack">智能体安全引领产业升级——国内AI安全产品市场深度分析</a></div> <div class="opt"> <span><i class="view"></i>501</span> <span class="collectBtn user_collection" data-id="621422" data-type="article" title="收藏"><i class="collect"></i>收藏</span> </div> </li> <li> <div class="info"> <a href="/articlelist/19_new_0_1.html" class="aLightGray" title="文章">文章</a> · <a href="/articlelist/88_new_0_1.html" class="aLightGray" title="前端">前端</a>   |  2个月前  |   </div> <div class="tit lineOverflow"><a href="/article/619053.html" title="CSS变量简化按钮悬停效果技巧" class="aBlack">CSS变量简化按钮悬停效果技巧</a></div> <div class="opt"> <span><i class="view"></i>501</span> <span class="collectBtn user_collection" data-id="619053" data-type="article" title="收藏"><i class="collect"></i>收藏</span> </div> </li> <li> <div class="info"> <a href="/articlelist/19_new_0_1.html" class="aLightGray" title="文章">文章</a> · <a href="/articlelist/88_new_0_1.html" class="aLightGray" title="前端">前端</a>   |  2个月前  |   </div> <div class="tit lineOverflow"><a href="/article/618916.html" title="JavaScript符号类型详解与应用" class="aBlack">JavaScript符号类型详解与应用</a></div> <div class="opt"> <span><i class="view"></i>501</span> <span class="collectBtn user_collection" data-id="618916" data-type="article" title="收藏"><i class="collect"></i>收藏</span> </div> </li> <li> <div class="info"> <a href="/articlelist/19_new_0_1.html" class="aLightGray" title="文章">文章</a> · <a href="/articlelist/88_new_0_1.html" class="aLightGray" title="前端">前端</a>   |  2个月前  |   </div> <div class="tit lineOverflow"><a href="/article/612539.html" title="HTML剪贴板复制粘贴怎么用" class="aBlack">HTML剪贴板复制粘贴怎么用</a></div> <div class="opt"> <span><i class="view"></i>501</span> <span class="collectBtn user_collection" data-id="612539" data-type="article" title="收藏"><i class="collect"></i>收藏</span> </div> </li> </ul> </div> <!-- 最新阅读 --> <div class="contBoxNor"> <div class="contTit"> <div class="tit">最新阅读</div> <a href="/articlelist.html" class="more">更多></a> </div> <ul class="latestReadList"> <li> <div class="info"> <a href="/articlelist/19_new_0_1.html" class="aLightGray" title="文章">文章</a> · <a href="/articlelist/88_new_0_1.html" class="aLightGray" title="前端">前端</a>   |  56分钟前  |   </div> <div class="tit lineOverflow"><a href="/article/621487.html" title="浏览器目录授权怎么做:权限复查与传统上传降级" class="aBlack">浏览器目录授权怎么做:权限复查与传统上传降级</a></div> <div class="opt"> <span><i class="view"></i>251</span> <span class="collectBtn user_collection" data-id="621487" data-type="article" title="收藏"><i class="collect"></i>收藏</span> </div> </li> <li> <div class="info"> <a href="/articlelist/19_new_0_1.html" class="aLightGray" title="文章">文章</a> · <a href="/articlelist/88_new_0_1.html" class="aLightGray" title="前端">前端</a>   |  3小时前  |   <a href="/articletag/4729_new_0_1.html" class="aLightGray" title="css">css</a> · <a href="/articletag/5401_new_0_1.html" class="aLightGray" title="前端开发">前端开发</a> · <a href="/articletag/40701_new_0_1.html" class="aLightGray" title="浏览器新特性">浏览器新特性</a> · <a href="/articletag/40702_new_0_1.html" class="aLightGray" title="动画">动画</a> · <a href="javascript:;" class="aLightGray" title="CSS">CSS</a> <a href="javascript:;" class="aLightGray" title="动画">动画</a> <a href="javascript:;" class="aLightGray" title="渐变">渐变</a> <a href="javascript:;" class="aLightGray" title="自定义属性">自定义属性</a> <a href="javascript:;" class="aLightGray" title="@property">@property</a> </div> <div class="tit lineOverflow"><a href="/article/621449.html" title="CSS @property 自定义属性怎么让渐变可插值:语法注册、继承与降级验收" class="aBlack">CSS @property 自定义属性怎么让渐变可插值:语法注册、继承与降级验收</a></div> <div class="opt"> <span><i class="view"></i>443</span> <span class="collectBtn user_collection" data-id="621449" data-type="article" title="收藏"><i class="collect"></i>收藏</span> </div> </li> <li> <div class="info"> <a href="/articlelist/19_new_0_1.html" class="aLightGray" title="文章">文章</a> · <a href="/articlelist/88_new_0_1.html" class="aLightGray" title="前端">前端</a>   |  3小时前  |   <a href="javascript:;" class="aLightGray" title="交叉类型">交叉类型</a> </div> <div class="tit lineOverflow"><a href="/article/621441.html" title="TypeScript 交叉类型" class="aBlack">TypeScript 交叉类型</a></div> <div class="opt"> <span><i class="view"></i>400</span> <span class="collectBtn user_collection" data-id="621441" data-type="article" title="收藏"><i class="collect"></i>收藏</span> </div> </li> <li> <div class="info"> <a href="/articlelist/19_new_0_1.html" class="aLightGray" title="文章">文章</a> · <a href="/articlelist/88_new_0_1.html" class="aLightGray" title="前端">前端</a>   |  3小时前  |   <a href="javascript:;" class="aLightGray" title="模板字面量类型">模板字面量类型</a> </div> <div class="tit lineOverflow"><a href="/article/621440.html" title="TypeScript 模板字面量类型" class="aBlack">TypeScript 模板字面量类型</a></div> <div class="opt"> <span><i class="view"></i>233</span> <span class="collectBtn user_collection" data-id="621440" data-type="article" title="收藏"><i class="collect"></i>收藏</span> </div> </li> <li> <div class="info"> <a href="/articlelist/19_new_0_1.html" class="aLightGray" title="文章">文章</a> · <a href="/articlelist/88_new_0_1.html" class="aLightGray" title="前端">前端</a>   |  3小时前  |   <a href="javascript:;" class="aLightGray" title="JavaScript">JavaScript</a> </div> <div class="tit lineOverflow"><a href="/article/621439.html" title="TypeScript 从 JavaScript 迁移" class="aBlack">TypeScript 从 JavaScript 迁移</a></div> <div class="opt"> <span><i class="view"></i>275</span> <span class="collectBtn user_collection" data-id="621439" data-type="article" title="收藏"><i class="collect"></i>收藏</span> </div> </li> <li> <div class="info"> <a href="/articlelist/19_new_0_1.html" class="aLightGray" title="文章">文章</a> · <a href="/articlelist/88_new_0_1.html" class="aLightGray" title="前端">前端</a>   |  3小时前  |   <a href="javascript:;" class="aLightGray" title="infer">infer</a> </div> <div class="tit lineOverflow"><a href="/article/621438.html" title="TypeScript infer 关键字" class="aBlack">TypeScript infer 关键字</a></div> <div class="opt"> <span><i class="view"></i>318</span> <span class="collectBtn user_collection" data-id="621438" data-type="article" title="收藏"><i class="collect"></i>收藏</span> </div> </li> <li> <div class="info"> <a href="/articlelist/19_new_0_1.html" class="aLightGray" title="文章">文章</a> · <a href="/articlelist/88_new_0_1.html" class="aLightGray" title="前端">前端</a>   |  3小时前  |   <a href="javascript:;" class="aLightGray" title="协变与逆变">协变与逆变</a> </div> <div class="tit lineOverflow"><a href="/article/621437.html" title="TypeScript 协变与逆变" class="aBlack">TypeScript 协变与逆变</a></div> <div class="opt"> <span><i class="view"></i>202</span> <span class="collectBtn user_collection" data-id="621437" data-type="article" title="收藏"><i class="collect"></i>收藏</span> </div> </li> <li> <div class="info"> <a href="/articlelist/19_new_0_1.html" class="aLightGray" title="文章">文章</a> · <a href="/articlelist/88_new_0_1.html" class="aLightGray" title="前端">前端</a>   |  4小时前  |   <a href="javascript:;" class="aLightGray" title="路径映射">路径映射</a> </div> <div class="tit lineOverflow"><a href="/article/621435.html" title="TypeScript 路径映射 paths" class="aBlack">TypeScript 路径映射 paths</a></div> <div class="opt"> <span><i class="view"></i>480</span> <span class="collectBtn user_collection" data-id="621435" data-type="article" title="收藏"><i class="collect"></i>收藏</span> </div> </li> <li> <div class="info"> <a href="/articlelist/19_new_0_1.html" class="aLightGray" title="文章">文章</a> · <a href="/articlelist/88_new_0_1.html" class="aLightGray" title="前端">前端</a>   |  4小时前  |   <a href="javascript:;" class="aLightGray" title="项目引用">项目引用</a> </div> <div class="tit lineOverflow"><a href="/article/621434.html" title="TypeScript 项目引用 References" class="aBlack">TypeScript 项目引用 References</a></div> <div class="opt"> <span><i class="view"></i>208</span> <span class="collectBtn user_collection" data-id="621434" data-type="article" title="收藏"><i class="collect"></i>收藏</span> </div> </li> <li> <div class="info"> <a href="/articlelist/19_new_0_1.html" class="aLightGray" title="文章">文章</a> · <a href="/articlelist/88_new_0_1.html" class="aLightGray" title="前端">前端</a>   |  4小时前  |   <a href="javascript:;" class="aLightGray" title="monorepo">monorepo</a> </div> <div class="tit lineOverflow"><a href="/article/621432.html" title="TypeScript Monorepo 配置" class="aBlack">TypeScript Monorepo 配置</a></div> <div class="opt"> <span><i class="view"></i>336</span> <span class="collectBtn user_collection" data-id="621432" data-type="article" title="收藏"><i class="collect"></i>收藏</span> </div> </li> <li> <div class="info"> <a href="/articlelist/19_new_0_1.html" class="aLightGray" title="文章">文章</a> · <a href="/articlelist/88_new_0_1.html" class="aLightGray" title="前端">前端</a>   |  4小时前  |   <a href="javascript:;" class="aLightGray" title="性能优化">性能优化</a> </div> <div class="tit lineOverflow"><a href="/article/621431.html" title="TypeScript 性能优化" class="aBlack">TypeScript 性能优化</a></div> <div class="opt"> <span><i class="view"></i>302</span> <span class="collectBtn user_collection" data-id="621431" data-type="article" title="收藏"><i class="collect"></i>收藏</span> </div> </li> <li> <div class="info"> <a href="/articlelist/19_new_0_1.html" class="aLightGray" title="文章">文章</a> · <a href="/articlelist/88_new_0_1.html" class="aLightGray" title="前端">前端</a>   |  4小时前  |   <a href="javascript:;" class="aLightGray" title="综合项目实战">综合项目实战</a> </div> <div class="tit lineOverflow"><a href="/article/621429.html" title="TypeScript 综合项目实战" class="aBlack">TypeScript 综合项目实战</a></div> <div class="opt"> <span><i class="view"></i>428</span> <span class="collectBtn user_collection" data-id="621429" data-type="article" title="收藏"><i class="collect"></i>收藏</span> </div> </li> </ul> </div> <!-- 课程推荐 --> <div class="contBoxNor"> <div class="contTit"> <div class="tit">课程推荐</div> <a href="/courselist.html" class="more">更多></a> </div> <ul class="classRecomList"> <li> <a href="/course/9.html" title="前端进阶之JavaScript设计模式" class="img_box"> <img src="/uploads/20221222/52fd0f23a454c71029c2c72d206ed815.jpg" onerror="this.onerror='';this.src='/assets/images/moren/morentu.png'" alt="前端进阶之JavaScript设计模式"> </a> <dl> <dt class="lineOverflow"> 前端进阶之JavaScript设计模式 </dt> <dd class="cont1 lineOverflow">设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。</dd> <dd class="cont2"> <a href="/course/9.html" title="前端进阶之JavaScript设计模式" class="toStudy">立即学习</a> <span>543次学习</span> </dd> </dl> </li> <li> <a href="/course/2.html" title="GO语言核心编程课程" class="img_box"> <img src="/uploads/20221221/634ad7404159bfefc6a54a564d437b5f.png" onerror="this.onerror='';this.src='/assets/images/moren/morentu.png'" alt="GO语言核心编程课程"> </a> <dl> <dt class="lineOverflow"> GO语言核心编程课程 </dt> <dd class="cont1 lineOverflow">本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。</dd> <dd class="cont2"> <a href="/course/2.html" title="GO语言核心编程课程" class="toStudy">立即学习</a> <span>516次学习</span> </dd> </dl> </li> <li> <a href="/course/74.html" title="简单聊聊mysql8与网络通信" class="img_box"> <img src="/uploads/20240103/bad35fe14edbd214bee16f88343ac57c.png" onerror="this.onerror='';this.src='/assets/images/moren/morentu.png'" alt="简单聊聊mysql8与网络通信"> </a> <dl> <dt class="lineOverflow"> 简单聊聊mysql8与网络通信 </dt> <dd class="cont1 lineOverflow">如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让</dd> <dd class="cont2"> <a href="/course/74.html" title="简单聊聊mysql8与网络通信" class="toStudy">立即学习</a> <span>500次学习</span> </dd> </dl> </li> <li> <a href="/course/57.html" title="JavaScript正则表达式基础与实战" class="img_box"> <img src="/uploads/20221226/bbe4083bb3cb0dd135fb02c31c3785fb.jpg" onerror="this.onerror='';this.src='/assets/images/moren/morentu.png'" alt="JavaScript正则表达式基础与实战"> </a> <dl> <dt class="lineOverflow"> JavaScript正则表达式基础与实战 </dt> <dd class="cont1 lineOverflow">在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。</dd> <dd class="cont2"> <a href="/course/57.html" title="JavaScript正则表达式基础与实战" class="toStudy">立即学习</a> <span>487次学习</span> </dd> </dl> </li> <li> <a href="/course/28.html" title="从零制作响应式网站—Grid布局" class="img_box"> <img src="/uploads/20221223/ac110f88206daeab6c0cf38ebf5fe9ed.jpg" onerror="this.onerror='';this.src='/assets/images/moren/morentu.png'" alt="从零制作响应式网站—Grid布局"> </a> <dl> <dt class="lineOverflow"> 从零制作响应式网站—Grid布局 </dt> <dd class="cont1 lineOverflow">本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。</dd> <dd class="cont2"> <a href="/course/28.html" title="从零制作响应式网站—Grid布局" class="toStudy">立即学习</a> <span>485次学习</span> </dd> </dl> </li> </ul> </div> </div> <!-- footer --> <div class="footer"> <ul> <li ><a href="/" class="aLightGray"><em class="navIcon navIconHome"></em><span>首页</span></a></li> <li class="curr"><a href="/articlelist.html" class="aLightGray"><em class="navIcon navIconRead"></em><span>阅读</span></a></li> <li ><a href="/courselist.html" class="aLightGray"><em class="navIcon navIconCourse"></em><span>课程</span></a></li> <li ><a href="/ai.html" class="aLightGray"><em class="navIcon navIconAi"></em><span>AI助手</span></a></li> <li ><a href="/user.html" class="aLightGray"><em class="navIcon navIconUser"></em><span>我的</span></a></li> </ul> </div> <script src="/assets/js/frontend/common.js" defer></script> <script src="/assets/js/juejin-theme.js?v=20260613b" defer></script> <script> var _hmt = _hmt || []; (function() { var hm = document.createElement("script"); hm.src = "https://hm.baidu.com/hm.js?e34c3e8ab31ba35d7e1c48ea8d77315f"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(hm, s); })(); </script> </body> </html>