Php XML与DOM的结合

Php XML与DOM的结合,php,xml,dom,Php,Xml,Dom,我正在尝试通过添加中间级节点来重新格式化XML 以下是我的输入: 高级PHP书籍 MySQL底漆 C++初学者 我需要它在结尾是这样的(在频道和项目之间添加了页面节点): 高级PHP书籍 MySQL底漆 C++初学者 以下是我的测试代码: $sxe = simplexml_load_string($string); $dom_sxe = dom_import_simplexml($sxe); $dom = new DOMDocument('1.0'); $channel = $d

我正在尝试通过添加中间级节点来重新格式化XML

以下是我的输入:


高级PHP书籍
MySQL底漆
C++初学者

我需要它在结尾是这样的(在频道和项目之间添加了页面节点):


高级PHP书籍
MySQL底漆
C++初学者

以下是我的测试代码:


$sxe = simplexml_load_string($string);

$dom_sxe = dom_import_simplexml($sxe);

$dom = new DOMDocument('1.0');

$channel = $dom->appendChild($dom->createElement('channel'));

$page = $channel->appendChild($dom->createElement('page'));

$dom_sxe = $dom->importNode($dom_sxe, true);
$dom_sxe = $page->appendChild($dom_sxe);

$dom->formatOutput = true;

echo $dom->saveXML(); 
我遇到的问题是通道元素加倍了。 请帮助。

<代码> $XML =“高级PHP图书MySQL入门入门用C++”;
$xml = '<channel> <item> <title>Advanced PHP Book</title> </item> <item> <title>MySQL primer</title> </item> <item> <title>C++ for beginners</title> </item> </channel>';

$dom = new DOMDocument;
$dom->loadXML($xml);
$page = $dom->createElement('page');
$items = $dom->getElementsByTagName('item');

while ($items->length) {
    $page->appendChild($items->item(0));
}

$dom->getElementsByTagName('channel')->item(0)->appendChild($page);
echo $dom->saveXML();
$dom=新的DOMDocument; $dom->loadXML($xml); $page=$dom->createElement('page'); $items=$dom->getElementsByTagName('item'); while($items->length){ $page->appendChild($items->item(0)); } $dom->getElementsByTagName('channel')->item(0)->appendChild($page); echo$dom->saveXML(); 输出

高级PHP书籍MySQL入门入门用C++

.

我认为这不应该太难:我认为使用
simplexml
东西会使它过于复杂

$dom = new DOMDocument;
$dom->loadXML($string);

// create the <page> element
$page = $dom->createElement('page');

while ($dom->firstChild->firstChild) {
    // move the items in <channel> to the <page> element
    $page->appendChild($dom->firstChild->firstChild);
}

// insert the <page> element into <channel>
$dom->firstChild->appendChild($page);
$dom->saveXML();
$dom=新的DOMDocument;
$dom->loadXML($string);
//创建元素
$page=$dom->createElement('page');
而($dom->firstChild->firstChild){
//将项目移入元素中
$page->appendChild($dom->firstChild->firstChild);
}
//将元素插入到
$dom->firstChild->appendChild($page);
$dom->saveXML();

有多个
元素。
$dom = new DOMDocument;
$dom->loadXML($string);

// create the <page> element
$page = $dom->createElement('page');

while ($dom->firstChild->firstChild) {
    // move the items in <channel> to the <page> element
    $page->appendChild($dom->firstChild->firstChild);
}

// insert the <page> element into <channel>
$dom->firstChild->appendChild($page);
$dom->saveXML();