Los documentos XML son muy útiles para almacenar grandes cantidades de información de forma ordenada y estructurada. Si tenemos uno de estos documentos y lo que queremos es “extraer” la información que nos interesa podemos usar XPath (XML Path Language) y de esta manera recorrer de forma fácil y eficiente un documento XML. Podemos usar expresiones sencillas de XPath dentro de nuestro código Java. Un ejemplo sería:
tenemos un archivo XML con varios títulos de lbros:
<biblioteca>
<libro year=”1998″>
<titulo>El puno de Dios</titulo>
<autor>Frederick Forsyth</autor>
<genero>Novela Historica</genero>
<editorial>Plaza y Janés</editorial>
<isbn>8484502449</isbn>
</libro>
<libro year=”2004″>
<titulo>El medico</titulo>
<autor>Noah Gordon</autor>
<genero>Ficción Historica</genero>
<editorial>Ediciones B</editorial>
<isbn>8466616381</isbn>
</libro>
<libro year=”2000″>
<titulo>El cuarto Protocolo</titulo>
<autor>Frederick Forsyth</autor>
<genero>Novela Policíaca</genero>
<editorial>DeBolsillo</editorial>
<isbn>8497595122</isbn>
</libro>
</biblioteca>
factory = DocumentBuilderFactory.newInstance();
factory.setNamespaceAware(true);
DocumentBuilder builder;
builder = factory.newDocumentBuilder();
Document document = builder.parse(“libros.xml”);
Con este código creamos un objeto XPath al que le pasamos una expresión regular que evaluamos:
//create a XPath factory
XPathFactory xfactory = XPathFactory.newInstance();
//create a XPath object thanks to XPath factory
XPath xpath = xfactory.newXPath();
//now we need an expression to compile thanks to the xpath object
XPathExpression expression = xpath.compile(“//libro”);
//evaluate the expression,we need the document and all the NODESET
Object obj = expression.evaluate(document, XPathConstants.NODESET);
//to find all the titles we can iterate throw a DOM Nodelist
NodeList nodes = (NodeList) obj;
Finalmente iteramos para obtener, en este caso, el año y el título de todos los libros que hay en nuestro documento XML
for(int i=0; i
System.out.println(nodes.item(i).getAttributes()
.getNamedItem(“year”).getTextContent());
System.out.println(document
.getElementsByTagName(“titulo”).item(i).getTextContent());}La salida que obtendremos sería:1998El puno de Dios
2004
El medico
2000
El cuarto ProtocoloMás información en:The Java XPath API
Referencia oficial del lenguaje en W3C
The XPath Toolkit in Java 5 Subo los archivos originales, tanto el XML como la clase de Java:
libros.xml
XPathSample.javaNota: Si os sirve de utilidad o para cualquier sugerencia, enlazad el post y dejadme un comentario!!!
Gracias!
Tags: INFORMÁTICA, java, parser, xpath

Entries (RSS)