Owl
Owl

Reputation: 689

xml - xpath select third node after a certain node

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

Answers (2)

Passerby
Passerby

Reputation: 10070

A long XPath:

http://3v4l.org/HtUUD `//item/property[@name="image"]/property[//property[@name="image_realtyimagetype_id"]/value/text()="pääkuva"]/property[@name="image_url"]/value/text()`

http://3v4l.org/4VpU3

//item/property[@name="image"]/property[property[@name="image_realtyimagetype_id"]/value/text()="pääkuva"]/property[@name="image_url"]/value/text()

Thanks @dirkk

Upvotes: 3

silkfire
silkfire

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

Related Questions