Die Methode zum Konvertieren von XML in eine JSON-Zeichenfolge in Javascript: Erhalten Sie zuerst das XML-DOM-Objekt über die XML-Zeichenfolge oder fordern Sie die XML-Datei an. Erhalten Sie dann den NodeValue-Wert des Unterelements durch Durchlaufen und Spleißen der JSON-Zeichenfolge . Dürfen.
Die Betriebsumgebung dieses Tutorials: Windows 7-System, JavaScript-Version 1.8.5, Dell G3-Computer.
Verwenden Sie JavaScript, um XML in JSON zu konvertieren.
Generieren Sie zunächst das XML-DOM-Objekt über die XML-Zeichenfolge:
/** * 通过传入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; }
Oder erhalten Sie das XML-DOM-Objekt, indem Sie die XML-Datei anfordern:
/** * 通过传入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; }
Der nächste Schritt ist der wichtige Teil. durch Durchlaufen und rekursives Erhalten des nodeValue des Unterelements, um den JSON-String auszuschneiden und das XML in einen JSON-String zu konvertieren:
/** * 将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; }
Verwendung: Übergeben Sie das Ducument-Objekt von XML, um den konvertierten JSON-String zu erhalten. getXmLDocumentByFilePath(xmlFilePath)
或者getXmlDocumentByXmlString(xmlString)
获取XML的Document对象,然后通过调用convertToJSON(xmlDocument)
Anwendungsbereich: Jedes XML-Dokument, das keine Attribute enthält.
Weitere Kenntnisse zum Thema Programmierung finden Sie unter:Programmiervideos! !
Das obige ist der detaillierte Inhalt vonSo konvertieren Sie XML in Javascript in JSON. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!