javascript中将xml转为json的方法

  介绍

这篇文章将为大家详细讲解有关javascript中将xml转为json的方法,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

javascript中将xml转换为json字符串的方法:首先通过xml字符串或请求xml文件来获取xml的DOM对象,然后通过遍历和递归来获取子元素的nodeValue值;最后拼接出json字符串即可。

<>强利用javascript将xml转换为json

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

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

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

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

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

/* *   ,*将XML的文档对象转换为JSON字符串   ,* @param  xmlDoc  xml的文档对象   ,* @return 字符串   ,*/xmlDoc function  convertToJSON (), {   ,,,//准备JSON字符串和缓存(提升性能)   ,,,var  jsonStr =,““   ,,,var  buffer =, new 数组();      ,,,buffer.push (“{”);   ,,,//获取xml文档的所有子节点   ,,,var  nodeList =, xmlDoc.childNodes;      ,,,生成(节点列表);      ,,,/* *   ,,,,*,中间函数,用于递归解析xml文档对象,并附加到json字符串中   ,,,,*,@param  node_list  xml文档的的节点列表   ,,,*/,,,function 生成(node_list), {      ,,,,,,,for  (var 小姐:=,0;,小姐:& lt;, node_list.length;,我+ +),{   ,,,,,,,,,,,var  curr_node =, node_list[我];   ,,,,,,,,,,,//忽略子节点中的换行和空格   ,,,,,,,,,,,if  (==curr_node.nodeType  3), {   ,,,,,,,,,,,,,,,继续;   ,,,,,,,,,,,}   ,,,,,,,,,,,//如果子节点还包括子节点,则继续进行遍历   ,,,,,,,,,,,if (祝辞curr_node.childNodes.length  1), {   ,,,,,,,,,,,,,,,buffer.push (“\““, +, curr_node.nodeName  +,“\“:, {“);   ,,,,,,,,,,,,,,,生成(curr_node.childNodes);   ,,,,,,,,,,,},{else    ,,,,,,,,,,,,,,,var  firstChild =, curr_node.childNodes [0];      null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null

javascript中将xml转为json的方法