Ich habe eine variable Zeichenfolge , die wohlgeformtes und gültiges XML enthält. Ich muss JavaScript-Code verwenden, um diesen Feed zu analysieren.
Wie kann ich dies mit (browserkompatiblem) JavaScript-Code erreichen?
quelle
Ich habe eine variable Zeichenfolge , die wohlgeformtes und gültiges XML enthält. Ich muss JavaScript-Code verwenden, um diesen Feed zu analysieren.
Wie kann ich dies mit (browserkompatiblem) JavaScript-Code erreichen?
Update: Eine korrektere Antwort finden Sie in der Antwort von Tim Down .
Internet Explorer und beispielsweise Mozilla-basierte Browser stellen unterschiedliche Objekte für die XML-Analyse bereit. Daher ist es ratsam, ein JavaScript-Framework wie jQuery zu verwenden, um die Unterschiede zwischen den Browsern zu beheben.
Ein wirklich einfaches Beispiel ist:
var xml = "<music><album>Beethoven</album></music>";
var result = $(xml).find("album").text();
Hinweis: Wie in den Kommentaren erwähnt; jQuery führt überhaupt keine XML-Analyse durch, sondern basiert auf der DOM innerHTML-Methode und analysiert sie wie HTML, also seien Sie vorsichtig, wenn Sie HTML-Elementnamen in Ihrem XML verwenden. Aber ich denke, es funktioniert ziemlich gut für einfaches XML-Parsen, aber es wird wahrscheinlich nicht für intensives oder dynamisches XML-Parsen empfohlen, bei dem Sie nicht im Voraus wissen, welches XML herunterkommt, und dies testet, ob alles wie erwartet analysiert wird.
innerHTML
Eigenschaft eines Elements zuweist , das überhaupt nicht zuverlässig ist.jQuery()
] HTML analysiert, nicht XML"Aktualisierte Antwort für 2017
Im Folgenden wird eine XML-Zeichenfolge in allen gängigen Browsern in ein XML-Dokument analysiert. Sofern Sie keine Unterstützung für IE <= 8 oder einen unbekannten Browser benötigen, können Sie die folgende Funktion verwenden:
Wenn Sie IE <= 8 unterstützen müssen, wird Folgendes ausgeführt:
Sobald Sie eine
Document
erhalten habenparseXml
, können Sie die üblichen DOM-Durchlaufmethoden / -eigenschaften wiechildNodes
und verwendengetElementsByTagName()
, um die gewünschten Knoten abzurufen.Anwendungsbeispiel:
Wenn Sie jQuery verwenden, können Sie ab Version 1.5 die integrierte
parseXML()
Methode verwenden, die funktional mit der obigen Funktion identisch ist.quelle
$()
XML-Parsing nicht zu verwenden . Lesen Sie die Kommentare genauer durch: Es funktioniert in vielen Situationen einfach nicht.parseXML()
Methode von jQuery verwendet eine Zeichenfolge. Ich bin etwas vorsichtig, die Antwort zu ändern, da ich momentan keine einfache Möglichkeit habe, sie zu testen.Die meisten Beispiele im Web (und einige der oben dargestellten) zeigen, wie ein XML aus einer Datei auf browserkompatible Weise geladen wird . Dies erweist sich als einfach, außer im Fall von Google Chrome, das die
document.implementation.createDocument()
Methode nicht unterstützt . Wenn Sie Chrome verwenden, müssen Sie zum Laden einer XML-Datei in ein XmlDocument-Objekt das integrierte XmlHttp-Objekt verwenden und die Datei dann laden, indem Sie den URI übergeben.In Ihrem Fall ist das Szenario anders, da Sie das XML aus einer Zeichenfolgenvariablen und nicht aus einer URL laden möchten . Für diese Anforderung funktioniert Chrome jedoch angeblich genau wie Mozilla (oder wie ich gehört habe) und unterstützt die parseFromString () -Methode.
Hier ist eine Funktion, die ich verwende (sie ist Teil der Browserkompatibilitätsbibliothek, die ich gerade erst baue):
quelle
if(window.ActiveXObject){...}
var dp; try{ dp = new DOMParser() } catch(e) { }; if(dp) { // DOMParser supported } else { // alert('you need to consider upgrading your browser\nOr pay extra money so developer can support the old versions using browser sniffing (eww)') }
.Marknote ist ein netter, leichter, browserübergreifender JavaScript-XML-Parser. Es ist objektorientiert und enthält viele Beispiele. Außerdem ist die API dokumentiert. Es ist ziemlich neu, aber es hat bisher in einem meiner Projekte gut funktioniert. Eine Sache, die ich daran mag, ist, dass es XML direkt aus Zeichenfolgen oder URLs liest und Sie es auch verwenden können, um das XML in JSON zu konvertieren.
Hier ist ein Beispiel dafür, was Sie mit Marknote tun können:
quelle
Ich habe immer den folgenden Ansatz verwendet, der in IE und Firefox funktioniert.
Beispiel XML:
JavaScript:
quelle
innerText
anstelle vongetAttribute()
Anscheinend bietet jQuery ab Version 1.5 jetzt jQuery.parseXML http://api.jquery.com/jQuery.parseXML/
jQuery.parseXML( data )
Kehrt zurück:XMLDocument
quelle
Bitte werfen Sie einen Blick auf XML DOM Parser ( W3Schools ). Es ist ein Tutorial zum Parsen von XML-DOMs. Der tatsächliche DOM-Parser unterscheidet sich von Browser zu Browser, aber die DOM-API ist standardisiert und bleibt gleich (mehr oder weniger).
Verwenden Sie alternativ E4X, wenn Sie sich auf Firefox beschränken können. Es ist relativ einfach zu bedienen und seit Version 1.6 Teil von JavaScript. Hier ist ein kleines Beispiel für die Verwendung ...
quelle
Weitere Informationen finden Sie unter http://www.easycodingclub.com/xml-parser-in-javascript/javascript-tutorials/
quelle
Haftungsausschluss : Ich habe einen Fast-XML-Parser erstellt
Ich habe einen Fast-XML-Parser erstellt , um eine XML-Zeichenfolge zu analysieren in ein JS / JSON-Objekt oder ein Zwischen-Traversal-Objekt . Es wird erwartet, dass es in allen Browsern kompatibel ist (jedoch nur in Chrome, Firefox und IE getestet).
Verwendung
Hinweis : Es wird kein DOM-Parser verwendet, sondern die Zeichenfolge mit RE analysiert und in ein JS / JSON-Objekt konvertiert.
Probieren Sie es online aus , CDN
quelle
Sie können auch über die jquery-Funktion ($. ParseXML) die XML-Zeichenfolge bearbeiten
Beispiel Javascript:
quelle