即。 - 我想使用xpath表达式“// banana / @ color”和以下示例xml ...返回字符串“yellow”...
<fruits>
<kiwi color="green" texture="hairy"/>
<banana color="yellow" texture="waxy"/>
</fruits>
$fruits = simplexml_load_string(
'<fruits>
<kiwi color="green" texture="hairy"/>
<banana color="yellow" texture="waxy"/>
</fruits>');
print_r($fruits->xpath('//banana/@color'));
产生
Array
(
[0] => SimpleXMLElement Object
(
[@attributes] => Array
(
[color] => yellow
)
)
)
而我更喜欢像...这样的东西。
Array
(
[0] => SimpleXMLElement Object
(
[0] => yellow
)
)
...所以我不需要在我写的应用程序中写一个特殊的案例。
非常感谢! :)答案 0 :(得分:7)
我刚给你的测试一个镜头,因为我很好奇,我发现它在转换为字符串时确实产生了字符串值yellow
。
$fruits = simplexml_load_string(
'<fruits>
<kiwi color="green" texture="hairy"/>
<banana color="yellow" texture="waxy"/>
</fruits>');
$found = $fruits->xpath('//banana/@color');
echo $found[0];
这似乎是SimpleXmlElement
属性节点的表示方式。因此,如果您不直接打印/回显它,可以将其用作(string) $found[0]
。
当然,如果您依赖剩余的SimpleXMLElement
值,那么我认为这可能是一个问题。但我认为只要记住在以后使用该节点时转换为字符串仍然可行。
如果您真的需要一个支持属性作为节点的节点的详细界面,那么您可能只想切换到DOMDocument
。您的代码将变得更加冗长,但实现更加清晰。