Php 如何在已创建的文档中包含现有XML文件

Php 如何在已创建的文档中包含现有XML文件,php,xml,dom,Php,Xml,Dom,我用PHP中的DOMDocument创建了一个新的XML文件。那很好。在文档之间,我想添加一个已经创建的XML文件。我该怎么做 现有XML文档: <?xml version="1.0" encoding="UTF-8"?> <books> <book> <magazine id="0" time="2014-02-18T14:42:06.0Z" type="0">New magazine</magazine>

我用PHP中的DOMDocument创建了一个新的XML文件。那很好。在文档之间,我想添加一个已经创建的XML文件。我该怎么做

现有XML文档:

    <?xml version="1.0" encoding="UTF-8"?>
    <books>
  <book>
  <magazine id="0" time="2014-02-18T14:42:06.0Z" type="0">New magazine</magazine>
  </book>
</books>
但是现在我不知道如何将片段添加到我的文档中。我试过:

$document->documentElement->appendChild($fragement);

这对我的XML文档没有影响。

您不能对该文档使用
appendXML()
,因为它会添加另一个XML声明,这只允许在文档开头使用。总之,
appendXML()
是一个坏主意,因为您正在快速地处理原始XML数据。使用第二个DOM,将文档节点导入第一个DOM并附加它


像这样:
$xml1=您不能对该文档使用
appendXML()
,因为它会添加另一个XML声明,该声明只允许在文档开头使用。总之,
appendXML()
是一个坏主意,因为您正在快速地处理原始XML数据。使用第二个DOM,将文档节点导入第一个DOM并附加它


像这样:
$xml1=
$document->documentElement->appendChild($fragement);
$xml1 = <<<'XML'
<?xml version="1.0" encoding="UTF-8"?>
<root><notbooks/></root>
XML;

$xml2 = <<<'XML'
<?xml version="1.0" encoding="UTF-8"?>
<books>
<book>
    <magazine id="0" time="2014-02-18T14:42:06.0Z" type="0">New magazine</magazine>
</book>
</books>
XML;

$dom1 = new DOMDocument();
$dom1->formatOutput       = true;  // These formatting options are only used
$dom1->preserveWhiteSpace = false; // for demonstration purposes here.
$dom1->loadXML($xml1);

$dom2 = new DOMDocument();
$dom2->loadXML($xml2);

$node = $dom1->importNode($dom2->documentElement, true);
$dom1->documentElement->appendChild($node);

$dom1->loadXML($dom1->saveXML()); // Just to make it pretty for the output below.

echo $dom1->saveXML();
<?xml version="1.0" encoding="UTF-8"?>
<root>
  <notbooks/>
  <books>
    <book>
      <magazine id="0" time="2014-02-18T14:42:06.0Z" type="0">New magazine</magazine>
    </book>
  </books>
</root>