Heim >Web-Frontend >js-Tutorial >So konvertieren Sie XML in ein JSON-ähnlicher JavaScript-Objekt
Kernpunkte
Im vorherigen Artikel "So erstellen Sie XML an JSON Proxy Server mit PHP", haben wir ein System erstellt, das XML -Nachrichten in JSON in AJAX umwandelt. Dies ist großartig, wenn Sie PHP oder einen anderen geeigneten serverseitigen Prozess ausführen. Aber was ist, wenn Sie auf JavaScript beschränkt sind? Der zufällige Zugriff auf Daten in XML -Dokumenten ist nicht interessant. Sie können DOM- oder XPATH-Methoden verwenden, aber sie sind nicht so einfach wie native (JSON-generierte) JavaScript-Objekteigenschaften wie myobj.list [0] .property1. Wenn Sie häufig im selben XML -Dokument auf Daten zugreifen, ist es möglicherweise praktischer, sie zuerst in ein JavaScript -Objekt umzuwandeln. Sind Sie bereit, Code zu schreiben? ...
xml2jsobj Funktion
Wir werden eine Funktion schreiben, die jeden Knoten des XML -Dokument -Dom -Baums rekursiv analysiert und ein JavaScript -Objekt zurückgibt. Diese Funktion übergibt einen Startknoten (normalerweise die Stammdokumentation) und gibt ein Objekt zurück (interne Daten):
function XML2jsobj(node) { var data = {}; // 添加值 function Add(name, value) { if (data[name]) { if (data[name].constructor != Array) { data[name] = [data[name]]; } data[name][data[name].length] = value; } else { data[name] = value; } }; // 元素属性 var c, cn; for (c = 0; cn = node.attributes[c]; c++) { Add(cn.name, cn.value); } // 子元素 for (c = 0; cn = node.childNodes[c]; c++) { if (cn.nodeType == 1) { if (cn.childNodes.length == 1 && cn.firstChild.nodeType == 3) { // 文本值 Add(cn.nodeName, cn.firstChild.nodeValue); } else { // 子对象 Add(cn.nodeName, XML2jsobj(cn)); } } } return data; }
xml Conversion
Unsere Ajax -Anrufe können XML aus dem Webdienst abrufen:
// 示例 XML 提要 var url = "example.xml"; // AJAX 请求 var xhr = (window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject("Microsoft.XMLHTTP")); xhr.onreadystatechange = XHRhandler; xhr.open("GET", url, true); xhr.send(null);
Unser XMLHTTPrequest OnReadyStatechange -Handler empfängt XML -Daten und konvertiert sie in ein JavaScript -Objekt:
// 处理响应 function XHRhandler() { if (xhr.readyState == 4) { var obj = XML2jsobj(xhr.responseXML.documentElement); // 对返回的数据执行某些操作... console.log(obj); xhr = null; } }
Also, falls Beispiel.xml die folgenden XML -Daten zurückgibt:
<?xml version="1.0"?><statuses><status><id>1</id><text>Hello!</text></status></statuses>
xml2jsobj (xhr.responsexml.documentElement) gibt das folgende Objekt zurück:
{ status: { id: ["one", 1], text: "Hello!" } }
Daher können Sie obj.status.text verwenden, um den "Hallo!"
Vorsichtsmaßnahmen
Einige Notizen zu XML2JSOBJ:
Sie können die Demo -Seite anzeigen oder Code und Beispiele für die Verwendung mit Ihrem eigenen Projekt herunterladen. Ich hoffe, Sie finden es nützlich - wenn Sie feststellen, dass es einige XML -Rätsel lindert, lassen Sie es mich wissen!
FAQs beim Konvertieren von XML in JavaScript -Objekte (dieser Abschnitt wurde basierend auf dem Originaltext gestoppt und angepasst, um die Duplikation zu vermeiden)
Dieser Teil des Inhalts wird aus dem Originaltext wiederholt und wurde weggelassen. Der Inhalt der FAQ im Originaltext ist überflüssig und nicht stark mit den Code-Beispielen korreliert, sodass er im Pseudooriginalprozess optimiert ist.
Das obige ist der detaillierte Inhalt vonSo konvertieren Sie XML in ein JSON-ähnlicher JavaScript-Objekt. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!