Xpath选择某个节点后的第三个节点


xpath select third node after a certain node

我有一个xml文件,看起来像这样:

<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>
[...]

里面有很多项目,有不同的图片和其他数据。

是否有一种直接的方法来获得"image_url"的值在这种情况下,其中值"image_realtyimagetype_id"是"pääkuva"不通过整个树与foreachs?(每个item-id中只能有一个"pääkuva")

"image_realtyimagetype_id"也可以声明"yleiskuva"或类似的,但我只需要"pääkuva"(这意味着主图像)

到目前为止,我只得到了文件中的第一个图像,如下所示:
$path = '//item[@id="'.$itemId.'"]/property[@name="image"]/property/property[@name="image_url"]/value/text()';

但是现在我需要特定的图像。是否有一种方法可以用xpath直接做到这一点?

长XPath:

http://3v4l.org/HtUUD'//项目/财产[@ name = "图像"]/财产[[@ name = " image_realtyimagetype_id "]//属性/值/text() ="paakuva"][@ name = " image_url "]/属性/值/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()

由于@dirkk

试试这个XPath:

//item[@id="1991901"]//property[@name="image_realtyimagetype_id"]/value[text() = "pääkuva"]/../following-sibling::property[@name="image_url"]/value