PHP注意:尝试在PHP中使用xpath查询过滤XML时获取非对象的属性

时间:2015-04-02 09:24:08

标签: php xml xpath

我试图过滤我的XML文件以查找具有特定名称的元素。我已按照here的说明操作,但结果每次都是空的。

XML

<vertalingen>
    <kamers>
        <kamer>
            <naam>Bruidssuite</naam>
            <beschrijving>Lorum Ipsum</beschrijving>
        </kamer>
    </kamers>    
</vertalingen>

PHP

$xml = simplexml_load_file('translations/nederlands.xml');
$info = $xml->xpath('//kamer[naam="Bruidssuite"]');
echo " found {$info->naam}";

代码仅返回&#34;找到&#34;

代码提供以下PHP错误:

  

PHP注意:尝试获取非对象的属性

我还尝试了以下变体:

$info = $xml->xpath('/vertalingen/kamers/kamer[naam="Bruidssuite"]');
$info = $xml->xpath('/kamers/kamer[naam="Bruidssuite"]');

1 个答案:

答案 0 :(得分:2)

XPath查询返回多个元素。 xpath()的返回值是一个数组(成功时)或FALSE(出错时),

来自php.net manual

  

返回SimpleXMLElement对象的数组,如果是,则返回FALSE   错误。

尝试以下方法:

$kamers = $xml->xpath('//kamer[naam="Bruidssuite"]');

foreach($kamer as $kamers) {
    echo "Found {$kamer->naam}<br />";
}

如果您确定属性naam是唯一的,那么只需获取第一个元素:

$info = $xml->xpath('//kamer[naam="Bruidssuite"]');
echo " found {$info[0]->naam}";