0

How do I get the value of a node with XPath?

Get all nodes which have a price above 35
/bookstore/book[price>35.00]

But when I change the > to an = for equals, the query fails. Please help. By the way I'm using php, but that shouldn't matter as XPath is universal.

Here's the php code and xml code I was using

$xml = "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>
 <bookstore>
 <book>
   <title lang=\"eng\">Harry Potter</title>
   <price>29.99</price>
 </book>
 <book>
   <title lang=\"eng\">Learning XML</title>
   <price>39.95</price>
 </book>
 </bookstore>"; $xml = new SimpleXMLElement($xml);

    $name = 'Shiny Red';
    $nodes = $xml->xpath(sprintf('/bookstore/book[price>35.00]', $name));
    if (!empty($nodes)) {
        printf('At least one building named "%s" found<hr/>', $name);
    echo "<textarea style=\"width: 400px; height: 300px;\">";print_r($nodes); echo "</textarea>";
    } else {
        printf('No building named "%s" found', $name);
    }
2
Contributors
1
Reply
3
Views
6 Years
Discussion Span
Last Post by pritaeas
0

What do you mean, the query fails ? If you replace > with = you won't find any results, because there is no price of 35.00 in your xml.

If however you do this:

$nodes = $xml->xpath(sprintf('/bookstore/book[price = \'39.95\']', $name));

You get one result.

Edited by pritaeas: n/a

This topic has been dead for over six months. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.