3.4. Searching XML Documents with XPath

XPath is a utility that gives you the ability to pull individual nodes out of an XML document without having to slog through the whole document tree. For example, say you had the following XML document:

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

<library>
   <book>
   <title = "XML For Dummies, 4th Edition" />
   <author = "Lucinda Dykes" />
   <author = "Ed Tittel" />
   <ISBN = "9780764588457" />
   </book>

   <book>
   <title = "PHP & MySQL For Dummies, 3rd Edition" />
   <author = "Janet Valade" />
   <ISBN = "9780470096000 />
   </book>

   <book>
   <title = "Database Development For Dummies" />
   <author = "Allen G. Taylor" />
   <ISBN = "9780764507526" />
   </book>

   <book>
   <title = "XML for Non Programmers" />
   <author = "Joe P. Writerly" />
   <ISBN = "1234567890123" />
   </book>

</library>

</xml>

If you need to pull out the title of every book by Janet Valade, you could loop through each book and compare the author element to the string "Janet Valade". This method would be fairly slow, and you, the developer, would have to put in extra effort. Nobody wants that!

Rather than reinvent this particular wheel, use XPath to find exactly the information you need. Use XPath to find out how many books in the library were written by Janet Valade by following these steps:

  1. Create a domXPath object:

    $xpath = new domXPath($dom_object);
  2. Execute an XPath query on the object, which returns an array of results:

    $authors = $xpath->query("/library/book/author");
  3. Loop through the array to find the exact results ...

Get PHP & MySQL® Web Development All-in-One Desk Reference for Dummies® now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.