Php 如何将XML字符串附加到DOMDocument对象中?

Php 如何将XML字符串附加到DOMDocument对象中?,php,xml,domdocument,Php,Xml,Domdocument,创建DOMDocument对象: $getToken = '<getToken>...</getToken>'; $getToken_objeto = new DOMDocument("1.0", "UTF-8"); $getToken_objeto -> loadXML($getToken); $getToken='…'; $getToken_objeto=新的DOMDocument(“1.0”、“UTF-8”); $getToken_objeto->loadX

创建DOMDocument对象:

$getToken = '<getToken>...</getToken>';
$getToken_objeto = new DOMDocument("1.0", "UTF-8");
$getToken_objeto -> loadXML($getToken);
$getToken='…';
$getToken_objeto=新的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);
$Signature='…';
$Signature_objeto=新的DOMDocument(“1.0”、“UTF-8”);
$Signature\u objeto->loadXML($Signature);
$Signature\u nodeList=$Signature\u objeto->getElementsByTagName(“签名”);
$Signature\u node=$Signature\u nodeList->item(0);
$getToken\u objeto->importNode($Signature\u node,true);
$getToken\u objeto->appendChild($Signature\u节点);
我有两个错误:

致命错误:未捕获异常“DomeException”,在C:…中显示消息“错误的文档错误”。。。 DOMEException:C中的错误文档错误:

似乎很容易解决,但我对使用PHPDOM扩展还没有经验


提前感谢。

您正在尝试附加原始节点,而不是导入的节点

$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();
$xml='…';
$fragmentXml=“…”;
$dom=新的DOMDocument();
$dom->loadXML($xml);
$xpath=newdomxpath($dom);
$fragment=$dom->createDocumentFragment();
$fragment->appendXml($fragmentXml);
$xpath
->求值(“//getToken”)
->项目(0)
->儿童(碎片);
echo$dom->saveXml();

您正在尝试附加原始节点,而不是导入的节点

$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();
$xml='…';
$fragmentXml=“…”;
$dom=新的DOMDocument();
$dom->loadXML($xml);
$xpath=newdomxpath($dom);
$fragment=$dom->createDocumentFragment();
$fragment->appendXml($fragmentXml);
$xpath
->求值(“//getToken”)
->项目(0)
->儿童(碎片);
echo$dom->saveXml();

您正在尝试附加原始节点,而不是导入的节点

$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();
$xml='…';
$fragmentXml=“…”;
$dom=新的DOMDocument();
$dom->loadXML($xml);
$xpath=newdomxpath($dom);
$fragment=$dom->createDocumentFragment();
$fragment->appendXml($fragmentXml);
$xpath
->求值(“//getToken”)
->项目(0)
->儿童(碎片);
echo$dom->saveXml();

您正在尝试附加原始节点,而不是导入的节点

$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();
$xml='…';
$fragmentXml=“…”;
$dom=新的DOMDocument();
$dom->loadXML($xml);
$xpath=newdomxpath($dom);
$fragment=$dom->createDocumentFragment();
$fragment->appendXml($fragmentXml);
$xpath
->求值(“//getToken”)
->项目(0)
->儿童(碎片);
echo$dom->saveXml();

Threak ThW完美地工作并帮助我了解和了解更多PHP DOM扩展:)Threak ThW完美地工作并帮助我了解和了解更多PHP DOM扩展:)Threak ThW完美地工作并帮助我了解和了解更多PHP DOM扩展:)Threak ThW完美地工作并帮助我了解和了解更多PHP DOM扩展:)