XPath Examples


En esta sección, aprenderemos algunos conceptos básicos de la sintaxis de XPath mediante ejemplos.


Documento de ejemplo XML

Usaremos este documento XML en los ejemplos siguientes:

"books.xml":

<?xml version="1.0" encoding="UTF-8"?>

<bookstore>

<book category="COOKING">
  Everyday Italian
  <author>Giada De Laurentiis</author>
  <year>2005</year>
  <price>30.00</price>
</book>

<book category="CHILDREN">
  Harry Potter
  <author>J K. Rowling</author>
  <year>2005</year>
  <price>29.99</price>
</book>

<book category="WEB">
  XQuery Kick Start
  <author>James McGovern</author>
  <author>Per Bothner</author>
  <author>Kurt Cagle</author>
  <author>James Linn</author>
  <author>Vaidyanathan Nagarajan</author>
  <year>2003</year>
  <price>49.99</price>
</book>

<book category="WEB">
  Learning XML
  <author>Erik T. Ray</author>
  <year>2003</year>
  <price>39.95</price>
</book>

</bookstore>

。


Cargar documento XML

Todos los navegadores modernos admiten el uso de XMLHttpRequest para cargar documentos XML.

Código para la mayoría de los navegadores modernos:

var xmlhttp=new XMLHttpRequest()

Código para los antiguos navegadores de Microsoft (IE 5 y 6):

var xmlhttp=new ActiveXObject("Microsoft.XMLHTTP")


Seleccionar nodos

Lamentablemente, Internet Explorer y otros navegadores manejan XPath de forma diferente.

En nuestros ejemplos se incluye código que funciona en la mayoría de los navegadores principales.

Internet Explorer usa el método selectNodes() para seleccionar nodos de un documento XML:

xmlDoc.selectNodes(xpath);

Firefox, Chrome, Opera y Safari usan el método evaluate() para seleccionar nodos de un documento XML:

xmlDoc.evaluate(xpath, xmlDoc, null, XPathResult.ANY_TYPE,null);


Seleccionar todos los title

El siguiente ejemplo selecciona todos los nodos title:

Ejemplo

/bookstore/book/title

Pruébalo »


Seleccionar el title del primer book

El siguiente ejemplo selecciona el title del primer nodo book dentro del elemento bookstore:

Ejemplo

/bookstore/book[1]/title

Pruébalo »

Aquí hay un problema. El ejemplo anterior produce resultados diferentes en IE y en otros navegadores.

IE5 y versiones posteriores consideran

¡Una solución!

Para resolver el problema de

El siguiente ejemplo selecciona el title del primer nodo book dentro del elemento bookstore:

Ejemplo

xml.setProperty("SelectionLanguage","XPath");
xml.selectNodes("/bookstore/book[1]/title");

Pruébalo »


Seleccionar todos los precios

El siguiente ejemplo selecciona todo el texto dentro de los nodos price:

Ejemplo

/bookstore/book/price/text()

Pruébalo »


Seleccionar los nodos price con precio mayor que 35

El siguiente ejemplo selecciona todos los nodos price cuyo precio sea mayor que 35:

Ejemplo

/bookstore/book[price>35]/price

Pruébalo »


Seleccionar los nodos title con precio mayor que 35

El siguiente ejemplo selecciona todos los nodos title cuyo precio sea mayor que 35:

Ejemplo

/bookstore/book[price>35]/title

Pruébalo »
Otras extensiones