javascript中將xml轉換為json字串的方法:首先透過XML字串或請求XML檔案來取得XML的DOM物件;然後透過遍歷和遞歸來取得子元素的nodeValue值;最後拼接出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對象,然後透過呼叫# )
傳入xml的Ducument物件即可得到轉換後的JSON字串。
適用範圍:不含attribute的任一XML文件。
更多程式相關知識,請造訪:程式設計影片! !
以上是javascript中怎麼將xml轉為json的詳細內容。更多資訊請關注PHP中文網其他相關文章!