Heim >Web-Frontend >js-Tutorial >So konvertieren Sie XML in ein JSON-ähnlicher JavaScript-Objekt

So konvertieren Sie XML in ein JSON-ähnlicher JavaScript-Objekt

Jennifer Aniston
Jennifer AnistonOriginal
2025-03-02 01:12:10474Durchsuche

How to Convert XML to a JSON-Like JavaScript Object

Kernpunkte

  • Die XML2JSOBJ -Funktion wandelt XML -Daten in JavaScript -Objekte um. Diese Funktion analysiert jeden Knoten des XML -Dokument -DOM -Baums rekursiv und gibt ein JavaScript -Objekt zurück, das für das Datenabruf bequemer ist.
  • Während XML2JSOBJ eine Querbrowser-Kompatibilität ist und große XML-Dokumente schnell verarbeiten kann, sollte es nur dann verwendet werden, wenn es tatsächlich benötigt wird. Wenn Sie nur ein oder zwei XML -Knotenwerte abrufen, kann die DOM- oder XPath -Methode schneller verwendet werden.
  • Der Prozess des Konvertierens von XML in JavaScript -Objekte beinhaltet das Parsen von XML -Daten und das Umwandeln in ein Format, das JavaScript verstehen und manipulieren kann. Dies ermöglicht intuitivere und effizientere Datenzugriff und Vorgänge.

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:

  1. Es gibt keinen Unterschied zwischen XML -Attributen und untergeordneten Elementen. Wenn sie denselben Namen haben, wird eine Reihe von Elementen zurückgegeben, wobei die Attribute bei Index 0 sind.
  2. xml2jsobj sollte nur verwendet werden, wenn es tatsächlich benötigt wird. Wenn Sie nur ein oder zwei XML -Knotenwerte abrufen, kann die DOM- oder XPath -Methode schneller verwendet werden.
  3. Dieser Code ist Kreuzbrowser-kompatibel (einschließlich IE6) und kann große XML-Dokumente schnell verarbeiten. Das heißt, es funktioniert möglicherweise nicht in allen Fällen. Es sollte wahrscheinlich keine Vorrang vor der Rückgabe von JSON vom Server haben.

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn