Reputation: 689
I have an xml file which looks like this:
<item id="1991901" >
<property name="image">
<property>
<property name="image_realtyimagetype_id">
<value>pääkuva</value>
</property>
<property name="image_itemimagetype_name">
<value>kivirealty-original</value>
</property>
<property name="image_desc">
<value></value>
</property>
<property name="image_url">
<value>http://domain.com/img4092288730864152376.jpg</value>
</property>
[...]
It contains a lot of items with different pictures and other data.
Is there a direct way to get the value of "image_url" in the case, where value "image_realtyimagetype_id" is "pääkuva" without going through the whole tree with foreachs? (there is only one "pääkuva" in every item-id)
The "image_realtyimagetype_id" can also state "yleiskuva" or similar, but I need only the "pääkuva" (which means main image)
I got until now only the first of the images in the file like this:
$path = '//item[@id="'.$itemId.'"]/property[@name="image"]/property/property[@name="image_url"]/value/text()';
But now I need the certain image. Is there a way to do this directly with xpath?
Upvotes: 0
Views: 105
Reputation: 10070
A long XPath:
//item/property[@name="image"]/property[property[@name="image_realtyimagetype_id"]/value/text()="pääkuva"]/property[@name="image_url"]/value/text()
Thanks @dirkk
Upvotes: 3
Reputation: 25983
Try this XPath:
//item[@id="1991901"]//property[@name="image_realtyimagetype_id"]/value[text() = "pääkuva"]/../following-sibling::property[@name="image_url"]/value
Upvotes: 0