Работа с PHP DOM - как в XML заменить один тег на другой, сохраняя подчиненные элементы?

xintrea

Новичок
Имеется текст с XML-форматированием:
Код:
<div id="recordContent">
    <div style="font-style:normal;">
        <p>Text 1</p>
        <p>Text 2</p>
    </div>
</div>
Необходимо в нем заменить тег <div id="recordContent"> на <body>, вот так:
Код:
<body>
    <div style="font-style:normal;">
        <p>Text 1</p>
        <p>Text 2</p>
    </div>
</body>
Для этого я написал следующий минимальный код:
Код:
<?php

$contents = <<<STR
<div id="recordContent">
    <div style="font-style:normal;">
        <p>Text 1</p>
        <p>Text 2</p>
    </div>
</div>
STR;

$htmlDom = new DOMDocument();
$htmlDom->loadHTML($contents);

// Поиск элемента с внутренними узлами
$element = $htmlDom->getElementById("recordContent");

if ($element)
{
    // Создание нового элемента <body>
    $htmlBody = $htmlDom->createElement('body');

    // Копирование дочерних элементов из <div> в <body>
    foreach ($element->childNodes as $child)
    {
        $htmlBody->appendChild($child);
    }

    // Замена элемента <div> верхнего уровня
    $element->parentNode->replaceChild($htmlBody, $element);

    // Получаем HTML-код внутри элемента
    $innerHtml = $htmlDom->saveXML();

    echo $innerHtml;
}   

?>
И этот PHP-код генерит вот такой текст:
Код:
<?xml version="1.0" standalone="yes"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<html><body><body>
    </body></body></html>
Вопрос: что не так, почему вместо замены одного головного элемента происходит не то что ожидается?
 
Последнее редактирование:

AnrDaemon

Продвинутый новичок
Тупо перенеси innerHTML в новый тег. Изобретаешь какую-то хрень бессмысленную.
 
Сверху