DOMDocument - объединить элементы в один XML - PullRequest
0 голосов
/ 20 февраля 2020

Пытается объединить root и тело в одно 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>

1 Ответ

0 голосов
/ 21 февраля 2020

Длина $body->documentElement->childNodes->length равна 0, так как для <body/>

нет дочерних узлов. Поскольку вы хотите импортировать $body в $root, вы должны добавить дочерний узел и импортировать узел, используя 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 демо

...