【工具】JS解析XML并且转为json对象

server/2024/11/29 19:34:12/

【工具】JS解析XML并且转为json对象

<?xml version='1.0' encoding='GB2312'?>
<root><head><transcode>hhhhhhh</transcode></head><body><param>ccccccc</param><param>aaaaaaa</param><param>qqqq</param><param>uuuuuu</param><script type="text/javascript" src="js-main.min.js"/></body>
</root> 

转为json之后的结果

调用方法

javascript">      let xmlString = `<?xml version='1.0' encoding='GB2312'?><root><head>
<transcode>hhhhhhh</transcode>
</head><body>
<param>ccccccc</param><param>aaaaaaa</param><param>qqqq</param>
<param>uuuuuu</param><script type="text/javascript" src="js-main.min.js"/></body>
</root> `// 使用 DOMParser 解析 XML 字符串const parser = new DOMParser();const xmlDoc = parser.parseFromString(xmlString, "application/xml");//将xml转为jsonlet xmlJson = this.xmlToJson(xmlDoc)console.log(xmlJson)

工具

javascript">    /*** 解析完整内容及属性* @param xml* @returns {{}}*/xmlToJson(xml) {// 创建一个空的对象来存储 JSON 数据let obj = {};if (xml.nodeType == 1) { // 元素节点// 如果存在属性,加入属性到对象中if (xml.attributes.length > 0) {obj["@attributes"] = {};for (let i = 0; i < xml.attributes.length; i++) {let attribute = xml.attributes.item(i);obj["@attributes"][attribute.nodeName] = attribute.nodeValue;}}} else if (xml.nodeType == 3) { // 文本节点obj = xml.nodeValue;}// 递归地处理每个子节点if (xml.hasChildNodes()) {for (let i = 0; i < xml.childNodes.length; i++) {let item = xml.childNodes.item(i);let nodeName = item.nodeName;if (typeof obj[nodeName] == "undefined") {obj[nodeName] = this.xmlToJson(item);} else {if (typeof obj[nodeName].push == "undefined") {let old = obj[nodeName];obj[nodeName] = [];obj[nodeName].push(old);}obj[nodeName].push(this.xmlToJson(item));}}}return obj;},


http://www.ppmy.cn/server/145969.html

相关文章

Java爬虫:深入探索1688接口的奥秘

在数字化时代&#xff0c;数据成为了企业最宝贵的资产之一。对于电商企业来说&#xff0c;获取和分析数据的能力直接关系到其市场竞争力。阿里巴巴旗下的1688平台&#xff0c;作为中国领先的批发贸易平台&#xff0c;拥有海量的商家和商品信息&#xff0c;成为了众多企业获取数…

git rebase-优雅合并与修改提交

文章目录 简介rebase用于合并使用rebase修改提交cherry-pick 简介 在Git核心概念图例与最常用内容操作(reset、diff、restore、stash、reflog、cherry-pick)中我们已经介绍了git的最常用实用的命令。 在上面说的那篇文章中&#xff0c;我们只是简单提了一下rebase。 是因为r…

使用经典的Java,还是拥抱新兴的Rust?

在当代互联网时代的企业级开发中&#xff0c;技术栈的选择往往牵动着每个团队的神经。随着Rust语言的崛起&#xff0c;许多开发团队开始重新思考&#xff1a;是继续坚持使用经典的Java&#xff0c;还是拥抱新兴的Rust&#xff1f;这个问题背后&#xff0c;折射出的是对技术演进…

关于Spring基础了解

Spring简介 Spring框架是一个开源的Java应用框架&#xff0c;旨在简化企业级应用程序的开发。它提供了一系列强大的工具和服务&#xff0c;帮助开发者构建高质量的Java应用程序。Spring框架的核心理念是使开发过程更加模块化、可测试和可维护。 主要特性 依赖注入&#xff08…

适配器模式(一种设计模式)

适配器模式, 也叫包装器模式. 将⼀个类的接⼝&#xff0c;转换成客⼾期望的另⼀个接⼝, 适配器让原本接⼝不兼容的类可以合作无间。 简单来说就是⽬标类不能直接使⽤, 通过⼀个新类进⾏包装⼀下, 适配调⽤⽅使⽤. 把两个不兼容的接⼝通过⼀定的⽅式使之兼容. 回忆一下slf4j模式…

宠物领养网络:SpringBoot的实现之道

第1章 绪论 1.1 课题背景 二十一世纪互联网的出现&#xff0c;改变了几千年以来人们的生活&#xff0c;不仅仅是生活物资的丰富&#xff0c;还有精神层次的丰富。时代进步的标志&#xff0c;就是让人们过上更好的生活。在互联网诞生之前&#xff0c;地域位置往往是人们思想上不…

飞书会话消息左右排列

飞书会话消息左右排列 1. 飞书登录后&#xff0c;点击头像&#xff0c;弹出菜单有个按钮设置 2. 3.

Docker 安装 windows 系统

前提 检查系统是否支持虚拟化 sudo apt install cpu-checker sudo kvm-ok Docker-Windows介绍 项目地址 Github链接&#xff1a;GitHub - dockur/windows: Windows in a Docker container. 兼容性 ⚙️ 产品平台Docker EngineLinux✅Docker DesktopLinux❌Docker Desktopma…