Создание объекта DOMDocument:
$getToken = '<getToken>...</getToken>'; $getToken_objeto = new DOMDocument("1.0", "UTF-8"); $getToken_objeto -> loadXML($getToken);
Попытка добавить XML-строку (подпись) в созданный выше DOMDocument:
$Signature = '<Signature>...</Signature>'; $Signature_objeto = new DOMDocument("1.0", "UTF-8"); $Signature_objeto -> loadXML($Signature); $Signature_nodeList = $Signature_objeto -> getElementsByTagName("Signature"); $Signature_node = $Signature_nodeList -> item(0); $getToken_objeto -> importNode($Signature_node, true); $getToken_objeto -> appendChild($Signature_node);
Я получаю 2 ошибки:
Неустранимая ошибка: исключить исключение «DOMException» с сообщением «Неверная ошибка документа» в C: … DOMException: ошибка неправильного документа в C: …
Кажется, просто решить, но я совершенно неопытен, используя расширение PHP DOM.
Заранее спасибо.
Вы пытаетесь добавить исходный узел, а не импортированный.
$Signature_node = $getToken_objeto->importNode( $Signature_nodeList->item(0), true );
Вы пытаетесь добавить узел в документ, но документ XML может содержать только один элемент документа, и он уже имеет его. Вы можете добавить его к элементу документа:
$getToken_objeto->documentElement->appendChild($Signature_node);
Но PHP может загружать фрагменты XML непосредственно в DOMDocumentFragment.
$xml = '<getToken>...</getToken>'; $fragmentXml = '<Signature>...</Signature>'; $dom = new DOMDocument(); $dom->loadXML($xml); $xpath = new DOMXpath($dom); $fragment = $dom->createDocumentFragment(); $fragment->appendXml($fragmentXml); $xpath ->evaluate('//getToken') ->item(0) ->appendChild($fragment); echo $dom->saveXml();