xml - xpath选择某个节点后的第三个节点

时间:2013-05-22 09:05:35

标签: php xml xpath

我有一个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? (每个项目中只有一个“pääkuva”id)

“image_realtyimagetype_id”也可以说“yleiskuva”或类似的,但我只需要“pääkuva”(意思是主图像)

到目前为止,我只得到文件中的第一个图像:

$path = '//item[@id="'.$itemId.'"]/property[@name="image"]/property/property[@name="image_url"]/value/text()';

但现在我需要一定的形象。有没有办法直接用xpath做到这一点?

2 个答案:

答案 0 :(得分:3)

漫长的XPath:

<德尔> http://3v4l.org/HtUUD `//项/属性[@名称= “图像”] /属性[//属性[@名称= “image_realtyimagetype_id”] /值/文本()= “pääkuva”] /属性[@名称= “IMAGE_URL”] /值/文本()`

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

答案 1 :(得分:0)

试试这个XPath:

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