Я пытался объединить два XML-документы, как это:Копирование DOMNodes из одного DOMDocument к другому
$def = new DOMDocument('1.0');
$rdef = new DOMDocument('1.0');
$def->load($path);
$rdef->loadXML($info);
$r = $def->getElementsByTagName('repository')->item(0);
$s = $rdef->getElementsByTagName('repository')->item(0);
try {
$r->appendChild($s);
}
catch (DOMException $e) {
SPConfig::debOut(get_class($s));
SPConfig::debOut($e->getMessage());
}
Результат:
DOMElement
Wrong Document Error
Так что, мне кажется, что $rdef->getElementsByTagName('repository')->item(0)
возвращается DOMElement объект, но definition говорит, что он должен быть DOMNode объект.
Любая идея, что не так?
Таким образом, вопрос, как бросить DOMElement к DOMNode, чтобы добавить его? –
@ Radek вам не обязательно. Как я уже сказал, DOMElement * - это * DOMNode через наследование. Просто добавьте его. Проблема в том, что вы пытаетесь скопировать в другой DOMDocument. Сначала вы должны ['importNode'] (http://de3.php.net/manual/en/domdocument.importnode.php) узла в документе перед его добавлением. – Gordon
Пробовал импортировать узел с $ def-> importNode ($ s, true); но по-прежнему получают ту же ошибку. Просто интересно, не проще ли преобразовывать эти документы в массивы, присоединяться к ним и затем преобразовывать обратно в XML-документ :( –