DOMDocument - 将元素合并为一个 XML

DOMDocument - merge elements into one XML

正在尝试将 root 和 body 合并为一个 XML。 2个元素在创建时被拆分的原因是因为它们将被预先构造并存在于不同的文件中,从而被加载。

我的代码:

<?php


$root = new DOMDocument();
$root->loadXML('<root/>');

$body = new DOMDocument();
$body->loadXML('<body/>');

foreach ($body->documentElement->childNodes as $child) {
  $body->documentElement->appendChild(
    $body->importNode($child, TRUE)
  );
}

echo $body->saveXML();

想要的结果:

<?xml version="1.0"?>
<root>
<body/>
</root>

$body->documentElement->childNodes->length 的长度为 0,因为 <body/>

没有子节点

如要将 $body 导入 $root,您应该附加子节点并使用根而不是子节点导入节点。

例如

$root = new DOMDocument();
$root->loadXML('<root/>');

$body = new DOMDocument();
$body->loadXML('<body/>');

foreach ($body->childNodes as $child) {
    $root->documentElement->appendChild(
        $root->importNode($child, TRUE)
    );
}

echo $root->saveXML();

输出

<?xml version="1.0"?>
<root><body/></root>

Php demo