DOMParser
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since March 2016.
Experimental: Esta es una tecnología experimental
Comprueba la Tabla de compabilidad de navegadores cuidadosamente antes de usarla en producción.
DOMParser
puede analizar gramaticalmente (parsear, en adelante) código XML o HTML almacenado en una cadena de texto y convertirlo en un Documento DOM. DOMParser
está especificado en DOM Parsing and Serialization.
Tener en cuenta que XMLHttpRequest soporta parsear XML y HTML desde recursos direccionables por URL.
Creando un DOMParser
Para crear un objeto DOMParser
simplemente usar new DOMParser()
.
Para más información sobre crear un objeto DOMParser
en extensiones Firefox, por favor vea la documentación de nsIDOMParser
.
Parseando XML
Una vez creado el objeto parseador, puedes parsear XML desde una cadena de texto usando el método parseFromString:
var parser = new DOMParser();
var doc = parser.parseFromString(stringContainingXMLSource, "application/xml");
Manejo de errores
Es importante tener en cuenta que si el proceso de parseado falla, actualmente DOMParser
no arroja una excepción, pero devuelve en cambio un documento de error (see Error 45566 en Firefox):
<parsererror xmlns="http://www.mozilla.org/newlayout/xml/parsererror.xml">
(error description)
<sourcetext>(a snippet of the source XML)</sourcetext>
</parsererror>
Los errores de parseo son reportados también a la Consola de errores, con el URI del documento (ver debajo) como el origen del error.
Parseando un documento SVG o HTML
El DOMParser
puede ser usado para parsear un documento SVG (Firefox 10.0 / Thunderbird 10.0 / SeaMonkey 2.7) o un documento HTML (Firefox 12.0 / Thunderbird 12.0 / SeaMonkey 2.9). Hay 3 resultados diferentes posibles, dependiendo del tipo MIME dado. Si el tipo del MIME es text/xml
, el objeto resultante será un XMLDocument
, si el tipo MIME es image/svg+xml
será un SVGDocument,
y si el tipo MIME es text/html
será un 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(stringContainingXMLSource, "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.
Extensión HTML DOMParser para otros navegadores
/*
* 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);
DOMParser de Chrome/JSM/XPCOM/Privileged Scope
Ver artículo aquí: nsIDOMParser
Especificaciones
Specification |
---|
HTML Standard # dom-parsing-and-serialization |
Compatibilidad con navegadores
BCD tables only load in the browser