我遇到了一个非常奇怪的错误。我正在编写一个函数来根据元素名称验证 XML,在本例中作为数组传入。首先,我将输入标准化为一个SimpleXMLElement
对象;在这种情况下,我传入一个 DOMDocument,并对其进行了测试,它正确转换为SimpleXMLElement
.
让我感到困惑的是,调用getName()
会抛出以下内容:
PHP Fatal error: Call to a member function getName() on a non-object
但是使用exit($xml->getName())
(or echo
) 将返回正确的结果 - 根元素名称!
相关代码:
function validateXML($xml, $format='') {
(get_class($xml) !== 'SimpleXMLElement') ?
((get_class($xml) === 'DOMDocument') ?
$xml = simplexml_import_dom($xml)
: $xml = simplexml_load_string($xml))
: $xml = $xml;
$rootName = ($xml->getName());
if ($rootName != $format[0]) {
exit($xml->getName())));
}
此外,如果重要的话,服务器正在运行 PHP 5.3
我对 PHP 非常陌生,因此非常感谢您的帮助!
PS为了清楚到底发生了什么,下面的代码:
function validateXML($xml, $format='') {
echo(get_class($xml);
$xml = simplexml_import_dom($xml);
echo(get_class($xml);
echo($xml->getName());
}
输出到服务器
DOMDocument
SimpleXMLElement
'ElementName' (the correct root name of my XML document)
...所以它似乎正在工作,除了致命错误仍然被抛出。