首页 > 其他分享 >JS实现 xml 转换 JSON 格式

JS实现 xml 转换 JSON 格式

时间:2025-01-08 10:14:06浏览次数:1  
标签:xml obj nodeName element item JSON let JS

一、转换方法如下:

function xmlToJson(xml) {
  const parser = new DOMParser();
  const xmlDoc = parser.parseFromString(xml, 'application/xml');
  const json = parseElement(xmlDoc.documentElement);
  return JSON.stringify(json, null, 2);
}
 
function parseElement(element) {
  let obj = {};
  if (element.nodeType === 1) { // Element
    if (element.attributes.length > 0) {
      obj['@attributes'] = {};
      for (let j = 0; j < element.attributes.length; j++) {
        let attribute = element.attributes.item(j);
        obj['@attributes'][attribute.nodeName] = attribute.nodeValue;
      }
    }
  } else if (element.nodeType === 3) { // Text
    obj = element.nodeValue;
  }
 
  if (element.hasChildNodes()) {
    for (let i = 0; i < element.childNodes.length; i++) {
      let item = element.childNodes.item(i);
      let nodeName = item.nodeName;
      if (typeof(obj[nodeName]) === 'undefined') {
        obj[nodeName] = parseElement(item);
      } else {
        if (typeof(obj[nodeName].push) === 'undefined') {
          let old = obj[nodeName];
          obj[nodeName] = [];
          obj[nodeName].push(old);
        }
        obj[nodeName].push(parseElement(item));
      }
    }
  }
  return obj;
}

二、使用fetch请求测试如下:

fetch('/test.xml').then(res => res.text() )
                         .then(data =>  {
                            let jsonData = JSON.parse(xmlToJson(data))['dataList']['data']
                            // console.log("before result ==>", jsonData)
                            let result = jsonData.map((element, i) => {
                              let obj = {}
                              Object.keys(element).forEach( key => {
                                obj[key] = element[key]["#text"]
                              })
                              return obj
                            });
                            console.log("result ===>", result)
                         })
    },

 

标签:xml,obj,nodeName,element,item,JSON,let,JS
From: https://www.cnblogs.com/zeosky-zhe/p/18659115

相关文章

  • Vue.js组件开发-如何动态更改图表类型
    Vue.js组件开发中,动态更改图表类型通常涉及到更新图表库的配置并重新渲染图表。如果使用的是ECharts,可以通过修改图表配置中的type属性来实现,并调用setOption方法来应用更改。示例:展示如何在Vue.js组件中动态更改ECharts图表类型:<template><div><divref="chart"st......
  • 【Vue.js 2.x源码解析】第22章 从解析到 AST:Vue 模板编译的实现
    第22章从解析到AST:Vue模板编译的实现parse的神秘面纱解析的整体流程正则驱动的HTML解析栈结构管理DOM层级小结Vue编译原理|AST解析|前端基础你会不会在用Vue2写一个组件时,忽然想到,模板字符串是怎么变成DOM的?深入研究一番你会发现,发现背......
  • 【Rust】从 Node.js 开发者的视角深入理解 Rust 的所有权与借用机制
    Rust的所有权(Ownership)与借用(Borrowing)机制是其区别于其他编程语言的核心特性,也是保障内存安全的重要基石。在本文中,我们将从熟悉Node.js的开发者视角出发,探讨Rust如何通过这些独特的设计实现高效可靠的内存管理,并对比JavaScript的垃圾回收机制,帮助您更容易理解这些概念。......
  • JS-20 字符串
    字符串就是零个或多个排在一起的字符,放在单引号或双引号之中'zifuchan'"zifuchuan"单引号字符串的内部,可以使用双引号。双引号字符串的内部,可以使用单引号'key="value"'"It'salongzifuchuan"如果要在单引号字符串的内部,使用单引号,就必须在内部的单引号前面加上反斜杠,用......
  • next.js实现SSR入门
    Next.js是一个基于React的框架,支持服务端渲染(Server-SideRendering,简称SSR)和静态站点生成(StaticSiteGeneration,简称SSG)。SSR是指在服务端生成HTML页面后再发送到浏览器,而不是将所有工作交给客户端。这种方式可以提升页面的首屏加载速度并有助于SEO。第一部分:ne......
  • JS-19 break语句和continue语句
     break语句和continue语句都具有跳转作用,可以让代码不按既有的顺序执行1、breakbreak语句用于跳出代码块或循环for(vari=0;i<5;i++){if(i===3){break;}console.log(i);}2、breakbreak语句用于跳出代码块或循......
  • JS-18 循环语句之while
    While语句包括一个循环条件和一段代码块,只要条件为真,就不断循环执行代码块。while(条件){语句;}1、while例子vari=0;while(i<100){console.log('i当前为:'+1);i=i+1;} 下面的例子是一个无限循环,因为循环条件总是为真while(true){consol......
  • 【NodeJs安全】探索
    免责声明"本文档所提供的信息旨在帮助网络安全专业人员更好地理解并维护他们负责的网站和服务器等系统。我们鼓励在获得适当授权的情况下使用这些信息。请注意,任何未经授权的使用或由此产生的直接或间接后果和损失,均由使用者自行承担。我们提供的资源和工具仅供学习和研究之用,我......
  • 在 C++ 中优雅地处理 JSON:nlohmann/json 库实践指南
    JSON(JavaScriptObjectNotation)作为一种轻量级的数据交换格式,在现代软件开发中扮演着重要角色。在C++开发中,nlohmann/json库因其易用性和灵活性而广受欢迎。本文将通过实例介绍如何使用这个强大的库进行JSON数据的序列化和反序列化操作。环境准备首先,我们需要配置项目......
  • 大学生HTML5期末作业 Web前端网页制作 html5+css3+js html+css+js网页设计 体育 腾讯
    大学生HTML5期末作业Web前端网页制作html5+css3+jshtml+css+js网页设计体育腾讯体育7个页面网页作品代码简单,可使用任意HTML辑软件(如:Dreamweaver、HBuilder、Vscode、Sublime、Webstorm、Text、Notepad++等任意html编辑软件进行运行及修改编辑等操作)。获取源码1......