XPath在兄弟条件下返回节点值

时间:2014-06-27 17:40:17

标签: php xpath

我使用PHP来解析XML,并希望使用xpath根据兄弟节点值返回节点值。我试过谷歌这几个小时无济于事。

这是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>

我想要做的是根据externalID节点的内容返回baseCR值。如果有人能帮助我,我会感到非常感激,它开始变得令人沮丧。

例如,如果资产节点中的兄弟值为&#39; /landing1.html',则xpath将返回0.1;或者,如果兄弟值节点是&#39; /landing3.html'

,则为0.3

到目前为止,我尝试了一些不成功的尝试:

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"]'));

非常感谢,

詹姆斯

1 个答案:

答案 0 :(得分:1)

使用//assets/asset[externalID = '/landing1.html']/baseCR