Join MDN and developers like you at Mozilla's View Source conference, 12-14 September in Berlin, Germany. Learn more at https://viewsourceconf.org

E4X

ECMAScript pour XML (E4X) est une extension de langage de programmation ajoutant un support XML natif à JavaScript. Cela se fait en fournissant un accès aux documents XML dans une forme qui semblera naturelle aux programmeurs ECMAScript. Son but est de proposer une syntaxe alternative et plus simple que les interfaces DOM pour accéder aux documents XML.

E4X est standardisé par l'Ecma International dans le standard ECMA-357 (actuellement dans sa seconde édition, de décembre 2005).

E4X est implémenté (au moins partiellement) dans SpiderMonkey (le moteur JavaScript de Gecko) et dans Rhino (moteur JavaScript écrit en Java).

Note : Dans les navigateurs basés sur Gecko 1.8 comme Firefox 1.5, E4X est déjà partiellement activé pour les auteurs de pages Web. Pour activer complètement E4X, l'élément <script> doit avoir le type MIME « text/javascript;e4x=1 » (c'est-à-dire avoir un attribut de la forme type="text/javascript;e4x=1"). La différence entre les deux modes est que sans le type MIME indiquant « e4x=1 », tous les littéraux de commentaires XML/HTML au niveau déclaratif (<!--...-->) sont ignorés afin d'assurer une rétro-compatibilité avec les astuces de masquage des scripts dans des commentaires. De plus, les sections CDATA (<![CDATA[...]]>) ne sont pas analysées comme des littéraux CDATA (ce qui mènerait à une erreur de syntaxe JS en HTML puisque l'élément <script> génère une section CDATA implicite, et ne peut donc pas contenir de sections CDATA explicites).

Bogues connus et limitations

  • Il n'est actuellement pas possible d'accéder à un objet DOM depuis E4X (bug 270553)
  • E4X ne supporte pas le traitement d'une déclaration XML (<?xml version=...?>) (voir bug 336551). Vous obtiendrez une erreur SyntaxError "xml is a reserved identifier" (même si le XML est une chaîne de caractères).

Solution :

var response = xmlhttprequest.responseText; // bug 270553
response = response.replace('<?xml version="1.0"?>', ""); // bug 336551
var e4x = new XML(response);

Ressources

Étiquettes et contributeurs liés au document

Étiquettes : 
 Contributeurs à cette page : BenoitL, Mgjbot, Chbok, Fredchat
 Dernière mise à jour par : BenoitL,