PHP通知: Trying to get property of non-object on filtering XML with xpath query in PHP

标签 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}";

代码仅返回“找到”

代码给出以下 PHP 错误:

PHP Notice: Trying to get property of non-object

我还尝试了以下变体:

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

最佳答案

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

来自php.net manual :

Returns an array of SimpleXMLElement objects or FALSE in case of an error.

尝试以下操作:

$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}";

关于PHP通知: Trying to get property of non-object on filtering XML with xpath query in PHP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29409396/

相关文章:

javascript - tinyMCE 未在 WordPress 插件中定义错误

php - Cakephp 保存一个主键不是 'id' 的表

php - MySQL 结果数组到 php 变量?

c# - 无法计算出 XPath 计数表达式结果。 C# xml Web 服务

更改节点 libxml2 的命名空间

java - vtd-xml evalXPathToString 行为奇怪/不起作用

php - 通过xpath解析xml值元素

php - 将值传递到 formmail.cgi 而不刷新(HTML 表单 PHP 处理)

c++ - 使用 libxml2 解析 XML 文件时丢失元素值

java - 放心 : unable to parse response for required value using Xpath