Ce sujet a déjà été abordé, mais il y a quelque temps depuis la dernière question concernant la gestion des espaces de noms.Analyseur Javascript par navigateur croisé pour XML avec espace de noms
Existe-t-il une solution multi-navigateur pour obtenir les éléments par leur nom en Javascript?
<?xml version="1.0" encoding="UTF-8"?>
<NS:response success="1" xmlns:NS="http://someURI/ns">
<NS:user firstname="foo" lastname="bar"></NS:user>
<NS:cookie value="2c0ea35bcac2e05d439609367a236b28" name="session"></NS:cookie>
</NS:response>
Jusqu'à présent, ce que j'ai:
var oXML = (new DOMParser()).parseFromString(xmlstring, "text/xml");
var root = oXML.documentElement;
var user = typeof(user=root.getElementsByTagName(root.prefix + ':user')[0]) === "undefined"
?root.getElementsByTagName('user')[0]
:user;
n'a pas été testé dans IE, mais si quelqu'un a une solution multi-navigateur, je serais prêt à entendre.
Autres considérations:
- getElementsByTagNameNS() - essaie d'éviter d'avoir à spécifier l'espace de noms/uri
- utilisant l'expression rationnelle pour enlever l'espace de noms avant de créer le document XML
- ne pas utiliser un namespace - J'ai cette option, mais je ne voudrais pas aller sur cette route
* DOMParser() * ne fonctionnera certainement pas dans IE, vous devrez passer à la [route ActiveX/MSXML] (http://erik.eae.net/archives/2005/07/03/20.19. 18 /). –
+1. Je m'en souviens, mais ce n'est pas un problème, il est facile de coder autour de ça; Si 'object.documentElement' n'est pas un navigateur croisé, ce serait un gros problème :) – vol7ron