Quiero usar JDOM para leer en un archivo XML, luego uso XPath para extraer datos del documento JDOM. Crea bien el objeto de documento, pero cuando uso XPath para consultar el documento para una lista de elementos, no obtengo nada.Espacio de nombres XML predeterminado, JDOM y XPath
Mi documento XML tiene un espacio de nombre predeterminado definido en el elemento raíz. Lo curioso es que cuando elimino el espacio de nombres predeterminado, ejecuta correctamente la consulta XPath y devuelve los elementos que quiero. ¿Qué más debo hacer para que mi consulta XPath devuelva resultados?
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));
}
¡Lo hice, gracias! – Michael
Esto es excelente, pasé las últimas 3 horas preguntándome por qué mi XPath de repente no funcionaba y era esto. Pffh! :) – Esko
¿Para qué es la x? – Meinkraft