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