创建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个错误:
致命错误:未捕获的异常&#39; DOMException&#39;有消息&#39;错误的文档错误&#39;在C:...... DOMException:C中错误的文档错误:...
似乎很容易解决,但使用PHP DOM扩展时非常缺乏经验。
提前致谢。
答案 0 :(得分:3)
您正在尝试附加原始节点 - 而不是导入的节点。
$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();