【工具】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之后的结果

【工具】JS解析XML并且转为json对象_服务器

调用方法

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转为json
      let xmlJson = this.xmlToJson(xmlDoc)
      console.log(xmlJson)

工具

/**
     * 解析完整内容及属性
     * @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;
    },