Hello,
JDOM est sensible au namespace, le xmlns="http://maven.apache.org/POM/4.0.0" que tu vois au d�but.
Le namespace fait partie du nom d'un �l�ment, on ne peut donc pas juste demander l'�l�ment "version" sans namespace, il faut demander l'�l�ment "version" de namespace "http://maven.apache.org/POM/4.0.0"
�a peut se faire ainsi, dans ta classe :
private static final Namespace POM_NS = Namespace.getNamespace("http://maven.apache.org/POM/4.0.0");
Et l� o� tu en as besoin :
rootNode.getChildren("version", POM_NS);
Avec ton fichier, �a va marcher.
... Maintenant le probl�me. JDOM est sensible aux namespaces, oui, conform�ment aux recommandations XML. Mais Maven, lui, ne l'est pas. Du coup, certains outils g�n�rent des POM sans namespace, ou m�me avec le mauvais namespace, et comme �a ne cause pas de probl�me, personne ne se plaint. En plus, va savoir si Maven ne d�finira pas une prochaine version de POM qui marche � peu pr�s pareil mais avec un autre namespace...
Il est possible, que tu aies besoin d'ignorer les namespaces toi aussi. Dans ce cas, tu peux faire ainsi :
1 2 3 4 5 6 7 8 9
| /**
* Récupère un élément enfant de l'élément donné, en fonction de son nom.
* Ignore les namespaces, ce qui est intéressant pour les POM aux namespaces peu fiables. Le nom vérifié est le local name, pas le qualified name.
*/
private static Element getPOMChild(Element parent, String childName) {
return parent.getChildren().stream()
.filter(child -> child.getName().equals(childName))
.findFirst().get();
} |
Et ainsi :
Element version = getPOMChild(rootNode, "version");
Partager