Je souhaite utiliser JDOM pour lire dans un fichier XML, puis utiliser XPath pour extraire des données du document JDOM. Il crée l'objet Document correctement, mais lorsque j'utilise XPath pour interroger le document pour une liste d'éléments, je n'ai rien.Espace de noms XML par défaut, JDOM et XPath
Mon document XML a un espace de noms par défaut défini dans l'élément racine. La chose amusante est, quand je supprime l'espace de noms par défaut, il exécute avec succès la requête XPath et renvoie les éléments que je veux. Que dois-je faire d'autre pour obtenir ma requête XPath pour retourner les résultats?
XML:
<?xml version="1.0" encoding="UTF-8"?>
<collection xmlns="http://www.foo.com">
<dvd id="A">
<title>Lord of the Rings: The Fellowship of the Ring</title>
<length>178</length>
<actor>Ian Holm</actor>
<actor>Elijah Wood</actor>
<actor>Ian McKellen</actor>
</dvd>
<dvd id="B">
<title>The Matrix</title>
<length>136</length>
<actor>Keanu Reeves</actor>
<actor>Laurence Fishburne</actor>
</dvd>
</collection>
Java:
public static void main(String args[]) throws Exception {
SAXBuilder builder = new SAXBuilder();
Document d = builder.build("xpath.xml");
XPath xpath = XPath.newInstance("collection/dvd");
xpath.addNamespace(d.getRootElement().getNamespace());
System.out.println(xpath.selectNodes(d));
}
A fait le tour, merci! – Michael
C'est excellent, j'ai passé les 3 dernières heures à me demander pourquoi mon XPath ne fonctionne soudainement pas et c'est ainsi. Pffh! :) – Esko
à quoi sert le x? – Meinkraft