介绍
这篇文章将为大家详细讲解有关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 nulljavascript中将xml转为json的方法