Desidero utilizzare JDOM per leggere in un file XML, quindi utilizzare XPath per estrarre i dati dal documento JDOM. Crea l'oggetto Document bene, ma quando uso XPath per interrogare il documento per un elenco di elementi, non ottengo nulla.Spazio nomi XML predefinito, JDOM e XPath
Il mio documento XML ha uno spazio dei nomi predefinito definito nell'elemento radice. La cosa divertente è che quando rimuovo lo spazio dei nomi predefinito, esegue correttamente la query XPath e restituisce gli elementi che voglio. Cos'altro devo fare per ottenere la query XPath per restituire i risultati?
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));
}
Ha fatto il trucco, grazie! – Michael
Questo è eccellente, ho passato le ultime 3 ore a chiedermi perché il mio XPath improvvisamente non funzioni ed è stato questo. Pffh! :) – Esko
a cosa serve la x? – Meinkraft