Nous utilisons dom4j 1.6.1, pour analyser XML à partir de quelque part. Parfois, les balises mentionnent l'espace de noms (par exemple:) et parfois non(). Et c'est appel de Element.selectSingleNode (String s) échoue.Nettoyer l'espace de noms avec dom4j
Pour l'instant nous avons 3 solutions, et nous ne sommes pas heureux avec eux
1 - Retirez tout occurence namespace avant de faire quoi que ce soit avec le document xml
xml = xml .replaceAll("xmlns=\"[^\"]*\"","");
xml = xml .replaceAll("ds:","");
xml = xml .replaceAll("etm:","");
[...] // and so on for each kind of namespace
2 - Retirer le namespace juste avant d'obtenir un noeud En appelant
Element.remove(Namespace ns)
Mais il ne fonctionne que pour un nœud et le premier niveau de l'enfant
3 - Clutter le code par
node = rootElement.selectSingleNode(NameWithoutNameSpace)
if (node == null)
node = rootElement.selectSingleNode(NameWithNameSpace)
Alors ... que pensez-vous? La sorcière est la moins pire? Avez-vous d'autres solutions à proposer?
Je vais essayer de creuser le doc à propos de l'espace de noms avec préfixe nul. Merci quand même. A propos de la source du fichier XML: theire n'est pas moyen de changer quoi que ce soit. Mais le fichier avec ou sans espace de noms est valide. Avec les fichiers, nous construisons des objets que nous utilisons dans notre système. Mais nous ne "écrivons" jamais quelque chose. (nous n'avons pas le droit de modifier le fichier xml) –