XPath Examples (JNNC Technologies)



The XML Example Document

We will use the following XML document in the examples below.
"books.xml":
<?xml version="1.0" encoding="UTF-8"?>

<bookstore>

<book category="cooking">
  <title lang="en">Everyday Italian</title>
  <author>Giada De Laurentiis</author>
  <year>2005</year>
  <price>30.00</price>
</book>

<book category="children">
  <title lang="en">Harry Potter</title>
  <author>J K. Rowling</author>
  <year>2005</year>
  <price>29.99</price>
</book>

<book category="web">
  <title lang="en">XQuery Kick Start</title>
  <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">
  <title lang="en">Learning XML</title>
  <author>Erik T. Ray</author>
  <year>2003</year>
  <price>39.95</price>
</book>

</bookstore>


Loading the XML Document

Using an XMLHttpRequest object to load XML documents is supported in all modern browsers.
var xmlhttp = new XMLHttpRequest();
Code for older browsers (IE5 and IE6) can be found in the AJAX tutorial.

Selecting Nodes

Unfortunately, there are different ways of dealing with XPath in different browsers.
Chrome, Firefox, Edge, Opera, and Safari use the evaluate() method to select nodes:
xmlDoc.evaluate(xpath, xmlDoc, null, XPathResult.ANY_TYPE,null);
Internet Explorer uses the selectNodes() method to select node:
xmlDoc.selectNodes(xpath);
In our examples we have included code that should work with most major browsers.

Select all the titles

The following example selects all the title nodes:

Example

/bookstore/book/title
Try it Yourself »

Select the title of the first book

The following example selects the title of the first book node under the bookstore element:

Example

/bookstore/book[1]/title
Try it Yourself »

Select all the prices

The following example selects the text from all the price nodes:

Example

/bookstore/book/price[text()]
Try it Yourself »

Select price nodes with price>35

The following example selects all the price nodes with a price higher than 35:

Example

/bookstore/book[price>35]/price
Try it Yourself »

Select title nodes with price>35

The following example selects all the title nodes with a price higher than 35:

Example

/bookstore/book[price>35]/title

Post a Comment

0 Comments

'; (function() { var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true; dsq.src = '//' + disqus_shortname + '.disqus.com/embed.js'; (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq); })();