--- title: DOMParser slug: Web/API/DOMParser translation_of: Web/API/DOMParser ---
{{APIRef("DOM")}}{{SeeCompatTable}}
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.
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.
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");
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.).
Der DOMParser beherrscht auch SVG {{geckoRelease("10.0")}} und HTML {{geckoRelease("12.0")}}. 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.
/* 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));
Siehe nsIDOMParser
| Feature | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari (WebKit) |
|---|---|---|---|---|---|
| XML support | {{CompatChrome(1)}} | {{CompatGeckoDesktop(1)}} | {{CompatIE(9)}} | {{CompatOpera(8)}} | {{CompatSafari(3.2)}} |
| SVG support | {{CompatChrome(4)}} | {{CompatGeckoDesktop(10.0)}} | {{CompatIE(10)}} | {{CompatOpera(15)}} | {{CompatSafari(3.2)}} |
| HTML support | {{CompatChrome(30)}} | {{CompatGeckoDesktop(12.0)}} | {{CompatIE(10)}} | {{CompatOpera(17)}} | {{CompatSafari(7.1)}} |
| Feature | Android | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
|---|---|---|---|---|---|
| XML support | {{CompatVersionUnknown}} | {{CompatVersionUnknown}} | {{CompatUnknown}} | {{CompatVersionUnknown}} | {{CompatUnknown}} |
| SVG support | {{CompatUnknown}} | {{CompatGeckoMobile(10.0)}} | {{CompatUnknown}} | {{CompatUnknown}} | {{CompatUnknown}} |
| HTML support | {{CompatUnknown}} | {{CompatGeckoMobile(12.0)}} | {{CompatUnknown}} | {{CompatUnknown}} | {{CompatUnknown}} |