我在以下行的PHP代码中遇到此问题:
if (!is_null($sxml->children('http://a9.com/-/spec/opensearchrss/1.0/')))
错误是:
Fatal error: Call to a member function children()
我知道错误的发生是因为没有孩子。
我想做的是确保不会触发错误。我尝试使用is_null和is_object检查子项是否存在,但仍然触发了错误。
我只需要隐藏错误信息,因为我不知道孩子什么时候出现。
我希望我有道理。
由于
答案 0 :(得分:1)
我知道错误的发生是因为没有孩子。
此声明错误。该错误与没有孩子的事实无关。 $sxml
中包含的对象没有名为children
的方法,因此调用将始终导致致命错误。
它可能是一个财产;通过向您的代码添加print_r($sxml->children);
调用来测试此内容。
除此之外,诸如 - 显然您可以传递URL以通过命名空间进行选择。children('http://a9.com/-/spec/opensearchrss/1.0/')
之类的调用根本没有意义:对于检索特定类型的所有子节点的函数,您将传递有效的XPath选择器或元素。但是,即使该函数存在,您传递的URL也不会如此,它很可能会失败。
答案 1 :(得分:0)
使用count()测试节点是否有子节点。
if($sxml->children().count()!=0)
{
}
答案 2 :(得分:0)
您错误关于您收到错误的原因。
您收到此错误是因为$sxml
不是SimpleXMLElement 。请显示创建$sxml
的代码,因为这是您的问题所在。
如果SimpleXMLElement
没有子节点,children()
将返回一个空数组。没有致命的错误。