--- title: DOMParser slug: Web/API/DOMParser tags: - API - DOM - HTML - SVG - XML translation_of: Web/API/DOMParser ---

{{APIRef("DOM")}}

L'interface DOMParser permet d'analyser le code source {{Glossary("XML")}} ou {{Glossary("HTML")}}  à partir d'une chaîne dans un {{domxref("Document")}} DOM.

Note : {{domxref("XMLHttpRequest")}} prend en charge l'analyse XML et HTML directement à partir des ressources adressables par URL, retournant un  Document dans sa propriété  {{domxref("XMLHttpRequest.reponse", "response")}} .

Vous pouvez effectuer l'opération inverse - convertir un arbre DOM en source XML ou HTML - en utilisant l'interface {{domxref("XMLSerializer")}}.

Dans le cas d'un document HTML, vous pouvez également remplacer des parties du DOM par de nouveaux arbres DOM construits à partir de HTML en définissant la valeur de {{domxref("Element.innerHTML")}} et des propriétés {{domxref("Element.outerHTML","outerHTML")}}. Ces propriétés peuvent également être lues pour récupérer des fragments HTML liés à la sous-arborescence DOM correspondante.

Création d'un DOMParser

Pour créer un objet DOMParser, utilisez simplement DOMParser().

Analyse XML

Une fois que vous avez créé un objet d'analyse, vous pouvez analyser XML à partir d'une chaîne à l'aide de la méthode {{domxref("DOMParser.parseFromString","parseFromString()")}} :

var parser = new DOMParser();
var doc = parser.parseFromString(stringContainingXMLSource, "application/xml");

Gestion d'erreurs

Notez que si le processus de traitement échoue, DOMParser ne génère aucune exception mais retourne à la place un document d'erreur :

<parsererror xmlns="http://www.mozilla.org/newlayout/xml/parsererror.xml">
(error description)
<sourcetext>(a snippet of the source XML)</sourcetext>
</parsererror>

Les erreurs d'analyse sont aussi renvoyées à la console d'erreur, avec l'URI du document (voir plus bas) comme la source d'erreur.

Analyse d'un document SVG ou HTML

Le DOMParser peut également être utilisé pour analyser un document SVG {{geckoRelease ("10.0")}} ou un document HTML {{geckoRelease ("12.0")}}. Trois résultats différents sont possibles, sélectionnés par le type MIME donné. Si le type MIME est text/xml, l'objet résultant sera un XMLDocument, si le type MIME est image/svg + xml, ce sera un SVGDocument et si le type MIME est text/html, ce sera un HTMLDocument.

var parser = new DOMParser();
var doc = parser.parseFromString(stringContainingXMLSource, "application/xml");
// retourne un document, mais pas un SVGDocument ni un HTMLDocument

parser = new DOMParser();
doc = parser.parseFromString(stringContainingSVGSource, "image/svg+xml");
// retourne un SVGDocument, qui est aussi un document.

parser = new DOMParser();
doc = parser.parseFromString(stringContainingHTMLSource, "text/html");
// retourne un HTMLDocument, qui est aussi un document.

Extension HTML DOMParser pour les autres navigateurs

/*
 * DOMParser HTML extension
 * 2012-09-04
 *
 * By Eli Grey, http://eligrey.com
 * Public domain.
 * AUCUNE GARANTIE EXPRESSE OU IMPLICITE. À UTILISER À VOS RISQUES ET PÉRILS. 
 */

/*! @source https://gist.github.com/1129031 */
/*global document, DOMParser*/

(function(DOMParser) {
	"use strict";

	var proto = DOMParser.prototype,
        nativeParse = proto.parseFromString;

	// Firefox/Opera/IE lancent des erreurs sur les types non pris en charge 
	try {
		//  WebKit renvoie null sur les types non pris en charge 
		if ((new DOMParser()).parseFromString("", "text/html")) {
			// text/html l'analyse est supportée nativement 
			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));

Spécifications

Spécification Statut Commentaire
{{SpecName('DOM Parsing', '#the-domparser-interface', 'DOMParser')}} {{Spec2('DOM Parsing')}} Définition initiale

Compatibilité des navigateurs

{{CompatibilityTable}}

Feature Chrome Edge Firefox (Gecko) Internet Explorer Opera Safari (WebKit)
XML support {{CompatChrome(1)}} {{CompatVersionUnknown}} {{CompatGeckoDesktop(1)}} {{CompatIE(9)}} {{CompatOpera(8)}} {{CompatSafari(3.2)}}
SVG support {{CompatChrome(4)}} {{CompatVersionUnknown}} {{CompatGeckoDesktop(10.0)}} {{CompatIE(10)}} {{CompatOpera(15)}} {{CompatSafari(3.2)}}
HTML support {{CompatChrome(30)}} {{CompatVersionUnknown}} {{CompatGeckoDesktop(12.0)}} {{CompatIE(10)}} {{CompatOpera(17)}} {{CompatSafari(7.1)}}
Feature Android Edge Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
XML support {{CompatVersionUnknown}} {{CompatVersionUnknown}} {{CompatVersionUnknown}} {{CompatUnknown}} {{CompatVersionUnknown}} {{CompatUnknown}}
SVG support {{CompatUnknown}} {{CompatVersionUnknown}} {{CompatGeckoMobile(10.0)}} {{CompatUnknown}} {{CompatUnknown}} {{CompatUnknown}}
HTML support {{CompatUnknown}} {{CompatVersionUnknown}} {{CompatGeckoMobile(12.0)}} {{CompatUnknown}} {{CompatUnknown}} {{CompatUnknown}}

Voir aussi