This is an experimental technology
Check the Browser compatibility table carefully before using this in production.
DOMParser can parse XML or HTML source stored in a string into a DOM Document. DOMParser is specified in DOM Parsing and Serialization.
Note that XMLHttpRequest supports parsing XML and HTML from URL-addressable resources.
To create a DOMParser object simply use new DOMParser().
For more information about creating a DOMParser in Firefox extensions, please see the documentation for nsIDOMParser.
Once you have created a parser object, you can parse XML from a string using the parseFromString method:
var parser = new DOMParser(); var doc = parser.parseFromString(stringContainingXMLSource, "application/xml");
Note that if the parsing process failed, the DOMParser does not throw an exception, but instead returns an error document:
<parsererror xmlns="http://www.mozilla.org/newlayout/xml/parsererror.xml"> (error description) <sourcetext>(a snippet of the source XML)</sourcetext> </parsererror>
The parsing errors are also reported to the Error Console, with the document URI (see below) as the source of the error.
The DOMParser can also be used to parse a SVG document (Firefox 10.0 / Thunderbird 10.0 / SeaMonkey 2.7) or a HTML document (Firefox 12.0 / Thunderbird 12.0 / SeaMonkey 2.9). There are three different results possible, selected by the MIME type given. If the MIME type is text/xml, the resulting object will be an XMLDocument, if the MIME type is image/svg+xml, it will be an SVGDocument and if the MIME type is text/html, it will be an HTMLDocument.
var parser = new DOMParser(); var doc = parser.parseFromString(stringContainingXMLSource, "application/xml"); // returns a Document, but not a SVGDocument nor a HTMLDocument parser = new DOMParser(); doc = parser.parseFromString(stringContainingSVGSource, "image/svg+xml"); // returns a SVGDocument, which also is a Document. parser = new DOMParser(); doc = parser.parseFromString(stringContainingHTMLSource, "text/html"); // returns a HTMLDocument, which also is a Document.
/*
* DOMParser HTML extension
* 2012-09-04
*
* By Eli Grey, http://eligrey.com
* Public domain.
* NO WARRANTY EXPRESSED OR IMPLIED. USE AT YOUR OWN RISK.
*/
/*! @source https://gist.github.com/1129031 */
/*global document, DOMParser*/
(function(DOMParser) {
"use strict";
var proto = DOMParser.prototype,
nativeParse = proto.parseFromString;
// Firefox/Opera/IE throw errors on unsupported types
try {
// WebKit returns null on unsupported types
if ((new DOMParser()).parseFromString("", "text/html")) {
// text/html parsing is natively supported
return;
}
} catch (ex) {}
proto.parseFromString = function(markup, type) {
if (/^\s*text\/html\s*(?:;|$)/i.test(type)) {
var
doc = document.implementation.createHTMLDocument("")
;
if (markup.toLowerCase().indexOf('<!doctype') > -1) {
doc.documentElement.innerHTML = markup;
}
else {
doc.body.innerHTML = markup;
}
return doc;
} else {
return nativeParse.apply(this, arguments);
}
};
}(DOMParser));
See article here: nsIDOMParser
| Specification | Status | Comment |
|---|---|---|
| DOM Parsing and Serialization The definition of 'DOMParser' in that specification. | Working Draft | Initial definition |
| Feature | Chrome | Edge | Firefox (Gecko) | Internet Explorer | Opera | Safari (WebKit) |
|---|---|---|---|---|---|---|
| XML support | 1 | (Yes) | 1.0 (1.7 or earlier) | 9 | 8 | 3.2 |
| SVG support | 4 | (Yes) | 10.0 (10.0) | 10 | 15 | 3.2 |
| HTML support | 30 | (Yes) | 12.0 (12.0) | 10 | 17 | 7.1 |
| Feature | Android | Edge | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
|---|---|---|---|---|---|---|
| XML support | (Yes) | (Yes) | (Yes) | ? | (Yes) | ? |
| SVG support | ? | (Yes) | 10.0 (10.0) | ? | ? | ? |
| HTML support | ? | (Yes) | 12.0 (12.0) | ? | ? | ? |
© 2005–2018 Mozilla Developer Network and individual contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/DOMParser