PHP: DOMNode :: appendChild для массива элементов - PullRequest
0 голосов
/ 02 февраля 2012

Я использую DOMDocument для разбора файла XML. Я перебираю различные элементы и проверяю, отсутствует ли какой-либо из них, и заполняю массив createElement сообщением об ошибке. В конце я пытаюсь добавить массив, но я всегда получаю одно и то же сообщение об ошибке:

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 !!!
 }
}

Любая помощь очень ценится. Ура, Riki.

1 Ответ

2 голосов
/ 02 февраля 2012

Вы не показываете, где определяется $response, но если это результат другого new DOMDocument(), то это объясняет вашу ошибку - вы не можете добавлять узлы из одного объекта DOM напрямую в другой. Сначала он должен быть импортирован через ->importNode(). Только после этого вы можете добавить его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...