--- 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}} |