在PHP中查询SimpleXML结果

时间:2011-08-19 17:07:57

标签: php syntax simplexml

我在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属性。我应该使用圆括号吗?支撑?我是否需要使用引号做一些不同的事情?

感谢您的帮助!

1 个答案:

答案 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的手册页。