Trouver des éléments dans un Nœud sans l'espace de noms, en Java
Donc, j'ai un document xml que j'ai déclaré ici:
DocumentBuilder dBuilder = dbFactory_.newDocumentBuilder();
StringReader reader = new StringReader(s);
InputSource inputSource = new InputSource(reader);
doc_ = dBuilder.parse(inputSource);
Puis j'ai une fonction où je passe une chaîne et je veux correspondre à un élément dans mon xml:
void foo(String str)
{
NodeList nodelist = doc_.getDocumentElement().getElementsByTagName(str);
}
Le problème, c'est quand le str
vient, il n'y a pas d'espace de noms en sorte que le xml que je serais essais:
<Random>
<tns:node />
</Random>
et la str
sera nœud. Donc nodelist est maintenant nulle, car ses attend tns:nœud, mais je suis passé dans le nœud. Et je sais que c'est pas bon d'ignorer l'espace de noms mais dans ce cas, son amende. Mon problème est que je ne sais pas comment faire pour rechercher le Nœud d'un élément tout en ignorant l'espace de noms. J'ai aussi pensé à l'ajout de l'espace de noms pour le str qui arrive, mais je n'ai aucune idée de comment le faire.
Toute aide serait grandement appréciée,
Grâce, -Josh
Vous devez vous connecter pour publier un commentaire.
Afin de correspondre à tous les nœuds dont le nom est " str " indépendamment de l'utilisation de l'espace de noms suivants:
Le caractère générique "*" correspond à tout espace. Voir De l'élément.getElementsByTagNameNS(...).
Modifier: en outre, comment @Wheezil l'a si bien dit dans un commentaire, vous devez appeler
DocumentBuilderFactory.setNamespaceAware(true)
pour que cela fonctionne, sinon les espaces de noms ne seront pas détectés.DocumentBuilderFactory
des objets, comme le DOM niveau 1-a créé les éléments n'ont pas delocalName
...