我有一个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>
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;
答案 0 :(得分:9)
XPATH中的属性使用@attr
语法引用。因此,您可以使用以下xpath
aa
// LEVELONE / MyField的[@迈亚特= 'A'] / @设为myVal
这意味着,抓住属性myfield
等于myatt
的所有'a'
元素。然后,从中选择myval
属性的值。请注意,这可能是多重结果。
测试XPATH表达式的便利位置是http://chris.photobooks.com/xml/default.htm。