Frage

Ich habe den folgenden Code, wo ich versuche, die c zu erhalten: ErstellDatum Knoten:

 value = '<?xml version="1.0" encoding="UTF-8"?><content><c:CreationDate>2010-09-04T05:04:53Z</c:CreationDate></content>';

 xml = (new DOMParser()).parseFromString(value, 'text/xml');

 console.log(xml.getElementsByTagName('c:CreationDate'));

Leider ein leeres Array es zurückkehrt, anstelle eines Arrays mit dem Knoten, der in der XML ist. Ich denke, dass dies wegen der verursacht wird „:“. Symbol

Gibt es eine Möglichkeit, es zu entkommen?

Hinweis: Bitte, lassen nicht darauf schließen Verwendung oder childnodes Dinge wie diese. Das wird für mich nicht funktionieren, da meine xml ist komplex überprüfen (hier ist nur ein Beispiel) und wird höchstwahrscheinlich in der Zukunft ändern, und ich kann nur in Tag-Namen verlassen.

Danke!

War es hilfreich?

Lösung

Die c in c:CreationDate bezeichnet einen XML-Namespace Präfix. Der Namespacepräfix ist nur eine Abkürzung für den Namespace. Der Namespace muss irgendwo im Dokument mit einem xmlns:c Attribute definiert werden. Aber in Ihrem Dokument der Namespace-Definition fehlt.

So sollte es aussehen:

var value = '<?xml version="1.0" encoding="UTF-8"?>' +
            '<content>' +
            '  <c:CreationDate xmlns:c="http://my.namespace">2010-09-04T05:04:53Z</c:CreationDate>' +
            '</content>';

oder

var value = '<?xml version="1.0" encoding="UTF-8"?>' +
            '<content xmlns:c="http://my.namespace">' +
            '  <c:CreationDate>2010-09-04T05:04:53Z</c:CreationDate>' +
            '</content>';

In diesem Beispiel wird das Präfix c auf den Namespace http://my.namespace zugeordnet. Der CreationDate-Tag wird mit c Präfix, so dass es auf den Namespace http://my.namespace gehört.

Dann können Sie den Namespace bewusst getElementsByTagNameNS() Funktion zu Abfrage für das ErstellDatum Element verwenden:

console.log(xml.getElementsByTagNameNS('http://my.namespace', 'CreationDate'));

Als erster Parameter müssen Sie die echte Namespace-Namen übergeben und nicht das Präfix.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top