我在PHP中使用SimpleXml,它对我来说效果很好。
最近我在尝试抓取某个节点时遇到了问题(我希望这是正确的术语)。
以下是XML示例
<xml>
<attribute>
<item name="fun_level">
<value>Really Fun</value>
</item>
</attribute>
</xml>
所以我使用simplexml获取所有属性,并通过循环运行它们,这一切都正常。但是,当我想获取具有特定名称的项目的“值”时,我遇到了麻烦。
如果我只想抓取第一项的值,那么这是有效的:
$value = (string)$attribute->item[0]->value;
不幸的是我想引用一个特定的项目,所以我试图做这样的事情,这是行不通的:
$value = (string)$attribute->item["@name='fun_level'"]->value;
我假设我的语法错误,我引用了该项的name属性。我应该使用圆括号吗?支撑?我是否需要使用引号做一些不同的事情?
感谢您的帮助!
答案 0 :(得分:4)
您需要使用SimpleXMLElement::xpath()
方法。
<?php
error_reporting(-1);
ini_set('display_errors', true);
$xml = '<xml>
<attribute>
<item name="fun_level">
<value>Really Fun</value>
</item>
</attribute>
</xml>';
$sxe = new SimpleXMLElement($xml);
foreach($sxe->xpath('//item[@name="fun_level"]') as $item){
echo $item->value;
}
另外,有关更多示例,请参阅描述SimpleXML的basic usage的手册页。