文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php教程>javascript中怎么将xml转为json

javascript中怎么将xml转为json

时间:2021-04-23  来源:互联网

今天PHP爱好者给大家带来javascript中将xml转换为json字符串的方法:首先通过XML字符串或请求XML文件来获取XML的DOM对象;然后通过遍历和递归来获取子元素的nodeValue值;最后拼接出JSON字符串即可。希望对大家有所帮助。

javascript中怎么将xml转为json方法

本教程操作环境:windows7系统、javascript1.8.5版、Dell G3电脑。

利用JavaScript将XML转换为JSON

首先通过XML字符串来生成XML的DOM对象:

/**
* 通过传入xml的内容字符串来解析xml
* @param xmlString xml字符串
* @returns xml的Document对象
*/
function getXmlDocumentByXmlString(xmlString) {
   var xmlDoc = null;
   if (window.DOMParser) {
       var parser = new DOMParser();
       xmlDoc = parser.parseFromString(xmlString, "text/xml");
   } else {
       //IE
       xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
       xmlDoc.async = "false";
       xmlDoc.loadXML(xmlString);
   }
   return xmlDoc;
}

或者通过请求XML文件来获取XML的DOM对象:

/**
* 通过传入xml文件路径来解析xml文档
* @param xmlFilePath xml文档路径,如:files/test.xml
* @returns xml的Document对象
*/
function getXmlDocumentByFilePath(xmlFilePath) {
   //xmlDocument对象
   var xmlDoc = null;
   //xmlhttp对象
   var xmlhttp = null;
   if (window.XMLHttpRequest) {
       //IE7+, FireFox, Chrome, Opera, Safari
       xmlhttp = new XMLHttpRequest();
   } else {
       //IE6, IE5
       xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
   }
   xmlhttp.open("GET", xmlFilePath, false);
   xmlhttp.send();
   xmlDoc = xmlhttp.responseXML;
   return xmlDoc;
}

接下来就是重点的部分了,通过遍历和递归获取子元素的nodeValue,来拼接出JSON字符串,实现将XML转换成JSON字符串:

/**
* 将XML的Document对象转换为JSON字符串
* @param xmlDoc xml的Document对象
* @return string
*/
function convertToJSON(xmlDoc) {
   //准备JSON字符串和缓存(提升性能)
   var jsonStr = "";
   var buffer = new Array();
   buffer.push("{");
   //获取xml文档的所有子节点
   var nodeList = xmlDoc.childNodes;
   generate(nodeList);
   /**
    * 中间函数,用于递归解析xml文档对象,并附加到json字符串中
    * @param node_list xml文档的的nodeList
    */
   function generate(node_list) {
       for (var i = 0; i < node_list.length; i++) {
           var curr_node = node_list[i];
           //忽略子节点中的换行和空格
           if (curr_node.nodeType == 3) {
               continue;
           }
           //如果子节点还包括子节点,则继续进行遍历
           if (curr_node.childNodes.length > 1) {
               buffer.push("\"" + curr_node.nodeName + "\": {");
               generate(curr_node.childNodes);
           } else {
               var firstChild = curr_node.childNodes[0];
               if (firstChild != null) {
                   //nodeValue不为null
                   buffer.push("\"" + curr_node.nodeName + "\":\"" + firstChild.nodeValue + "\"");
               } else {
                   //nodeValue为null
                   buffer.push("\"" + curr_node.nodeName + "\":\"\"");
               }
           }
           if (i < (node_list.length - 2)) {
               buffer.push(",");
           } else {
               break;
           }
       }
       //添加末尾的"}"
       buffer.push("}");
   }
   jsonStr = buffer.join("");
   return jsonStr;
}

使用方式:通过getXmLDocumentByFilePath(xmlFilePath)或者getXmlDocumentByXmlString(xmlString)获取XML的Document对象,然后通过调用convertToJSON(xmlDocument)传入xml的Ducument对象即可得到转换后的JSON字符串。

适用范围:不含有attribute的任意XML文档。

以上就是javascript中怎么将xml转为json的详细内容,更多请关注php爱好者其它相关文章!

相关阅读更多 +
最近更新
排行榜 更多 +
元梦之星最新版手游

元梦之星最新版手游

棋牌卡牌 下载
我自为道安卓版

我自为道安卓版

角色扮演 下载
一剑斩仙

一剑斩仙

角色扮演 下载