if($xml->getElementsByTagName($elmnt) && $xml->getElementsByTagName($elmnt)->length > 0)
此行旨在检查错误。我想要的是,而不是打破整个页面,制作一个清晰的错误信息。它包含在一个函数中,用于在失败时停止所有相关进程,如果不起作用,则继续显示页面的其余部分,因为页面布局不依赖于此函数是否成功。
致命错误:在第 100 行
file.php 中的非对象上调用成员函数getElementsByTagName()
我如何实际检查以确保所讨论的DOMDocument
具有该元素而不会抛出上述错误?我尝试过只使用第一个条件或第二个条件。
var_dump($xml);
object(DOMDocument)#3 (1) {
["preserveWhitespace"]=>
bool(false)
}
答案 0 :(得分:0)
如果使用simplexml_load_file加载文件,它将以成功加载的方式返回,或者在失败时返回false。您收到的错误表示变量$ xml不是对象,这意味着当您尝试将xml文件加载到变量上时,它没有成功完成。
如果在执行getElementsByTagName($ elmnt)之前确定$ xml不是false,则不应该出现错误致命错误:在非对象上调用成员函数getElementsByTagName()在第100行的file.php中
if (file_exists('test.xml')) {
$xml = simplexml_load_file('test.xml');
if($xml){
print_r($xml);
}
} else {
exit('Failed to open test.xml.');
}
答案 1 :(得分:0)
你的问题是$xml
不是一个对象,你必须先检查一下:
if ($xml && ($obj = $xml->getElementsByTagName($elmnt)) && $obj->length > 0) {
// you should be good as this point
}
如果!empty($xml)
未定义,可以使用$xml
代替$xml
。