Ich möchte mit JDOM eine XML-Datei einlesen und dann mit XPath Daten aus dem JDOM-Dokument extrahieren. Es erstellt das Dokument-Objekt in Ordnung, aber wenn ich XPath verwende, um das Dokument nach einer Liste von Elementen abzufragen, bekomme ich nichts.Standard-XML-Namespace, JDOM und XPath
Mein XML-Dokument verfügt über einen Standard-Namespace, der im Stammelement definiert ist. Das Lustige ist, wenn ich den Standard-Namensraum entferne, führt er die XPath-Abfrage erfolgreich aus und gibt die gewünschten Elemente zurück. Was muss ich noch tun, damit meine XPath-Abfrage Ergebnisse zurückgibt?
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));
}
Hat den Trick, danke! – Michael
Das ist hervorragend, ich habe die letzten 3 Stunden damit verbracht, mich zu wundern, warum mein XPath plötzlich nicht funktioniert und das war es. Pffh! :) – Esko
wofür ist das x? – Meinkraft