XPath expressions provide a powerful way of addressing parts of an XML
document. The W3C XPath recommendation can be found at
http://www.w3.org/TR/xpath. Many good XPath tutorials can be
found on the web, such as http://www.w3schools.com/xpath/.
Essentially, XPath expressions allow you to search a document for nodes that match a given criteria. Note that it finds nodes: this means it can locate not only elements, but attributes, text content, etc.
To use XPath in the xmlTree API, a XPath object is first
created with xmlTreeNewXPath(). If any namespaces are needed in
the expression, they must be registered with the xpath object via
xmlTreeXPathRegisterNs(). XPath expressions can then be executed
with xmlTreeXPathExecute()
EXAMPLE<capture>
<rootNode><name>John Doe</name><age>34</age><iq>34</iq></rootNode>
</capture><$xmlRaw = $ret>
<$doc = (xmlTreeNewDocFromString( $xmlRaw, 'XML_PARSE_NOBLANKS'))>
<$xpath = (xmlTreeNewXPath($doc))>
<!-- this selects the 'name' node -->
<$name = (xmlTreeXPathExecute($xpath, "/rootNode/name"))>
<$nameText = (xmlTreeGetContent($name))>
name is $nameText
<!-- this selects all nodes whose content is 34 -->
<$nodes = (xmlTreeXPathExecute($xpath, "//*[.='34']"))>
The following elements have the value 34:
<loop $nodes>
<$ret = (xmlTreeGetName($nodes))>
$ret
</loop>
If you have XML data stored in the field of a database, you can use
xmlTreeQuickXPath() to easily extract data from it for comparison:
select name from books
where xmlTreeQuickXPath(data, '/rootNode/item') = 'Bill'
See the sample xmlTree08_XPath for more and larger
examples using XPath and QuickXPath.
SEE ALSOxmlTreeNewXPath,
xmlTreeXPathExecute,
xmlTreeXPathRegisterNs,
xmlTreeQuickXPath