---
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");
parser = new DOMParser();
doc = parser.parseFromString(stringContainingSVGSource, "image/svg+xml");
qui est aussi un document
parser = new DOMParser();
doc = parser.parseFromString(stringContainingHTMLSource, "text/html");
qui est aussi un document
Extension HTML DOMParser pour les autres navigateurs
AUCUNE GARANTIE EXPRESSE OU IMPLICITE. À UTILISER À VOS RISQUES ET PÉRILS.
(function(DOMParser) {
"use strict";
var proto = DOMParser.prototype,
nativeParse = proto.parseFromString;
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")) {
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