属性等于的php xpath get节点

属性等于的php xpath get节点,php,Php,我有一个xml,如何获取levelone中的节点,该节点具有名为myatt的属性,其值为a,然后访问它的myval。 我试着引用其他帖子来让它工作,但它似乎不工作我的xpath出了什么问题 $this->myXmlObj->xpath(//levelone[myfield[attributes/myattt='a]]]) 编辑2 XPATH中的属性由@attr语法引用。因此,您可以使用以下xpath检索aa //一级/myfield[@myatt='a']/@myval 这意味着,抓取所有属性m

我有一个xml,如何获取
levelone
中的节点,该节点具有名为
myatt
的属性,其值为
a
,然后访问它的
myval
。 我试着引用其他帖子来让它工作,但它似乎不工作我的xpath出了什么问题

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

编辑2
XPATH中的属性由
@attr
语法引用。因此,您可以使用以下xpath检索
aa

//一级/myfield[@myatt='a']/@myval

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


测试XPATH表达式的一个方便的地方是。

skabbes非常感谢它能够匹配节点,但我没有以字符串的形式获取值,我仍然在获取一个结构(请参见编辑1)@user391986,SimpleXML只会从XPATH查询返回元素,不管您是否请求属性、字符串、数字,我明白了,谢谢。那么我应该像edit2那样做,还是有更好的方法来提取值呢?我假设您正在使用,在这种情况下,您需要使用$xpathResult->nodeValue来提取属性。您也可以使用。
<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>
array
  0 => 
    object(SimpleXMLElement)[41]
      public '@attributes' => 
        array
          'myval' => string 'a' (length=40)
    $myVar = $this->myXmlObj->xpath("//levelone/myfield[@myatt='a']");
    $myOutput = ((string)$myVar[0]->attributes()->myVal;