在同级条件下XPath返回节点值


XPath return node value on sibling condition

我正在使用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值。如果有人能帮助我,我将非常感激,它开始变得令人沮丧。

例如,如果资产节点中的兄弟值为'/landing .html', xpath将返回0.1,如果兄弟值节点为'/landing .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"]'));

提前感谢,

詹姆斯

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