我的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检查孩子是否存在,但错误仍然被触发。
我只需要隐藏错误信息,因为我不知道孩子们什么时候会出现。
我希望我说的有意义。
谢谢
我知道错误发生了,因为没有子节点。
这个语句是错误的。这个错误与没有孩子这一事实无关。$sxml
中包含的对象没有称为children
的方法,因此该调用将总是导致致命错误。
它可能是一个属性;通过在代码中添加print_r($sxml->children);
调用来测试这一点。
除此之外,像 -显然你可以通过一个URL来选择名称空间children('http://a9.com/-/spec/opensearchrss/1.0/')
这样的调用根本没有意义:对于检索某种类型的所有子函数,您要么传递一个有效的XPath选择器,要么传递一个元素。但是您传递的URL两者都不是,所以即使该函数存在,它也很可能失败。
使用count()来测试节点是否有子节点
if($sxml->children().count()!=0)
{
}
你是错误关于为什么你得到错误。
你得到这个错误,因为$sxml
不是SimpleXMLElement。请显示创建$sxml
的代码,因为这是您的问题所在。
如果SimpleXMLElement
没有子数组,则children()
返回一个空数组。没有致命错误