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

Siehe nsIDOMParser

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

Schlagwörter des Dokuments und Mitwirkende

Mitwirkende an dieser Seite: flying-sheep, mdnwebdocs-bot, michaeljaekel, wskc, pinguin0815
Zuletzt aktualisiert von: flying-sheep,