PHP:DOMNode :: appendChild到一个Elements数组

时间:2012-02-02 13:49:41

标签: php xml domdocument appendchild domexception

我正在使用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 !!!
 }
}

非常感谢任何帮助。 干杯, 理机。

1 个答案:

答案 0 :(得分:2)

您没有显示正在定义$response的位置,但如果它是另一个new DOMDocument()的结果,那么这就解释了您的错误 - 您无法直接将节点从一个DOM对象添加到另一个。必须先通过->importNode()导入。只有在那之后才能真正追加它。