首页 > 解决方案 > DOMDocument - 将元素合并为一个 XML

问题描述

试图将根和正文合并到一个 XML 中。这两个元素在创建时被拆分的原因是因为它们将被预先构建并存在于不同的文件中,因此被加载。

我的代码:

<?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>

标签: xmldomdocumentphp-7.3

解决方案


的长度$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演示


推荐阅读