php xpath获取属性等于的节点

时间:2011-04-07 21:40:07

标签: php

我有一个xml如何让levelone中的节点具有名为myatt的属性,其值为a,然后访问它myval。 我尝试引用其他帖子以使其正常工作,但它似乎无法解决我的xpath错误

$this->myXmlObj->xpath("//levelone[myfield[attributes/myatt='a]]]"));

<myxml>
  <levelone>
      <myfield myatt="a" myval="aa" />
      <myfield myatt="b" myval="bb" />

  </levelone>  
  <leveltwo>
      <myfield myatt="c" myval="dd" />
      <myfield myatt="c" myval="dd" />
  </leveltwo>
</myxml>

编辑1

array
  0 => 
    object(SimpleXMLElement)[41]
      public '@attributes' => 
        array
          'myval' => string 'a' (length=40)

编辑2

    $myVar = $this->myXmlObj->xpath("//levelone/myfield[@myatt='a']");
    $myOutput = ((string)$myVar[0]->attributes()->myVal;

1 个答案:

答案 0 :(得分:9)

XPATH中的属性使用@attr语法引用。因此,您可以使用以下xpath

检索aa
  

// LEVELONE / MyField的[@迈亚特= 'A'] / @设为myVal

这意味着,抓住属性myfield等于myatt的所有'a'元素。然后,从中选择myval属性的值。请注意,这可能是多重结果。

测试XPATH表达式的便利位置是http://chris.photobooks.com/xml/default.htm