我正在使用DOMDocument来解析XML文件。我循环遍历不同的元素,看看是否有任何元素丢失,我用一个带有createElement的数组填充错误消息。最后,我正在尝试appendChild那个数组,但我总是得到相同的错误信息:
Uncaught exception 'DOMException' with message 'Wrong Document Error'
DOMNode->appendChild(Object(DOMElement))
1 {main}
thrown in /xxx/xxx.php on line 235
PHP Fatal error: Call to undefined method DOMElement::item() in /xxx/xxx.php on line 235.
代码如下:
$SMQuery = new DOMDocument();
$SMQuery->loadXML($params);
$response = $SMQuery->createElement('SMreply');
$errors = array();
if (!$reqtyp = $SMQuery->getElementsByTagName("tag1"))
{$errors[] = $SMQuery->createElement('error', 'tag1 Element is missing');}
if (!$reqtyp = $SMQuery->getElementsByTagName("tag2"))
{$errors[] = $SMQuery->createElement('error', 'tag2 Element is missing');}
......
if(!empty($errors))
{
foreach($errors as $error) {
$response->appendChild($error); <==== this line is causing the error !!!
}
}
非常感谢任何帮助。 干杯, 理机。
答案 0 :(得分:2)
您没有显示正在定义$response
的位置,但如果它是另一个new DOMDocument()
的结果,那么这就解释了您的错误 - 您无法直接将节点从一个DOM对象添加到另一个。必须先通过->importNode()
导入。只有在那之后才能真正追加它。