DOMParser

Dies ist eine experimentelle Technologie
Da diese Technologie noch nicht definitiv implementiert wurde, sollte die Browserkompatibilit├Ąt beachtet werden. Es ist auch m├Âglich, dass die Syntax in einer sp├Ąteren Spezifikation noch ge├Ąndert wird.

Der DOMParser kann XML oder HTML aus einem String in ein DOM-Document parsen. Der DOMParser ist spezifiziert in DOM Parsing and Serialization.

XMLHttpRequest unterst├╝tzt das parsen von XML- und HTML-Dokumenten auf die ├╝ber eine URL zugegriffen wird.

DOMParser erzeugen

Um einen neuen DOMParser zu erzeugen benutze einfach new DOMParser().

F├╝r mehr Informationen ├╝ber das Erstellen von einem DOMParser in einer Firefox-Erweiterung, konsultiere die nsIDOMParser-Dokumentation.

XML parsen

Nachdem du einmal ein Parser-Objekt erzeugt hast, kannst du XML-Strings mit der parseFromString-Methode parsen.

const parser = new DOMParser();
const doc = parser.parseFromString(stringContainingXMLSource, "application/xml");

Fehlerbehandlung

Beachte dass derzeit keine Exception ausgel├Âst wird, wenn es beim Ausf├╝hren des Parser-Prozesses zu einem Fehler kommen sollte. Stattdessen wird ein Fehler-Dokument  (s.a. Bug 45566) ausgel├Âst:

<parsererror xmlns="http://www.mozilla.org/newlayout/xml/parsererror.xml">
(error description)
<sourcetext>(a snippet of the source XML)</sourcetext>
</parsererror>

Die Parsing-Fehler werden auch in der Error-Console, zusammen mit dem Dokument-URl als Fehlerquelle ausgegeben (s.u.).

Ein SVG- oder HTML-Dokument parsen

Der DOMParser beherrscht auch SVG (Firefox 10.0 / Thunderbird 10.0 / SeaMonkey 2.7) und HTML (Firefox 12.0 / Thunderbird 12.0 / SeaMonkey 2.9). Es gibt drei m├Âgliche Ergebnisse, die mit der ├ťbergabe eines MIME-Typen ausgew├Ąhlt werden k├Ânnen. Ist der MIME-Typ text/xml, ist das resultierende Dokument ein XMLDocument, ist er image/svg+xml, wird ein SVGDocument zur├╝ckgegeben und f├╝r text/html erh├Ąlt man ein HTMLDocument.

const xmlDoc = new DOMParser().parseFromString(stringContainingXMLSource, "application/xml");
// returns a Document, but not a SVGDocument nor a HTMLDocument

const svgDoc = new DOMParser().parseFromString(stringContainingXMLSource, "image/svg+xml");
// returns a SVGDocument, which also is a Document.

const htmlDoc = new DOMParser().parseFromString(stringContainingHTMLSource, "text/html");
// returns a HTMLDocument, which also is a Document.

DOMParser HTML-Erweiterung f├╝r andere Browser

/* inspiriert von https://gist.github.com/1129031 */
/*global document, DOMParser*/

(function(DOMParser) {
    "use strict";

    const proto = DOMParser.prototype;
    const nativeParse = proto.parseFromString;

    // Firefox/Opera/IE werfen bei unbekannten Typen Fehler
    try {
        // WebKit gibt bei bei unbekannten Typen `null` zur├╝ck
        if (new DOMParser().parseFromString("", "text/html")) {
            // text/html wird unterst├╝tzt
            return;
        }
    } catch (ex) {}

    proto.parseFromString = function(markup, type) {
        if (/^\s*text\/html\s*(?:;|$)/i.test(type)) {
            const doc = document.implementation.createHTMLDocument("");
            if (markup.toLowerCase().includes('<!doctype')) {
                doc.documentElement.innerHTML = markup;
            } else {
                doc.body.innerHTML = markup;
            }
            return doc;
        } else {
            return nativeParse.apply(this, arguments);
        }
    };
}(DOMParser));

Den DOMParser im Chrome/JSM/XPCOM/Privileged-Scope aufrufen

Browser-Kompatibilit├Ąt

Wir konvertieren die Kompatibilit├Ątsdaten in ein maschinenlesbares JSON Format. Diese Kompatibilit├Ątstabelle liegt noch im alten Format vor, denn die darin enthaltenen Daten wurden noch nicht konvertiert. Finde heraus wie du helfen kannst!
Feature Chrome Firefox (Gecko) Internet Explorer Opera Safari (WebKit)
XML support 1 1.0 (1.7 oder fr├╝her) 9 8 3.2
SVG support 4 10.0 (10.0) 10 15 3.2
HTML support 30 12.0 (12.0) 10 17 7.1
Feature Android Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
XML support (Ja) (Ja) ? (Ja) ?
SVG support ? 10.0 (10.0) ? ? ?
HTML support ? 12.0 (12.0) ? ? ?

Siehe auch