DOMParser
=========

**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 (en-US) 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:`


```js
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):


```xml
<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`.


```js
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


```js
/\*
 \* 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 with JavaScript enabled. Enable JavaScript to view data.

Ver también
-----------

* Parsing and serializing XML (en-US)
* XMLHttpRequest
* XMLSerializer (en-US)
* Parsing HTML to DOM