Reputation: 1074
I'm using PHP to parse XML and would like to use xpath to return a node value based on a sibling node value. I've tried googleing this for a few hours to no avail.
Here's the XML
<testSettings>
<assets>
<asset>
<name>landing 1</name>
<externalID>/landing1.html</externalID>
<baseCR>0.01</baseCR>
</asset>
<asset>
<name>landing 2</name>
<externalID>/landing2.html</externalID>
<baseCR>0.02</baseCR>
</asset>
<asset>
<name>landing 3</name>
<externalID>/landing3.html</externalID>
<baseCR>0.03</baseCR>
</asset>
</assets>
</testSettings>
What I would like to do is return the baseCR value based on the content of the externalID node. If anyone can help I'd be most grateful, its beginning to get frustrating.
For example, the xpath would return 0.1 if the sibling value in the asset node was '/landing1.html' or 0.3 if the sibling value node was '/landing3.html'
Here's a few of my unsuccessful attempts so far:
print_r($this->VXML->xpath("//assets/asset/baseCR[../externalID='/landing2.html']"));
print_r($this->VXML->xpath('//assets/asset[externalID/text() = "/landing2.html"]/baseCR/text()'));
print_r($this->VXML->xpath('//assets/asset/baseCR[../text()="landing 2"]'));
Many thanks in advance,
James
Upvotes: 0
Views: 101