用DOM进行XML重整

问题描述

| 我正在尝试重新格式化XML以添加中间层节点。 这是我输入的内容:
<channel>
  <item>
    <title>Advanced PHP Book</title>
  </item>
  <item>
    <title>MySQL primer</title>
  </item>
  <item>
    <title>C++ for beginners</title>
  </item>
</channel>
我需要像最后这样(在页面和频道之间添加页面节点):
<channel>
  <page>
    <item>
      <title>Advanced PHP Book</title>
    </item>
    <item>
      <title>MySQL primer</title>
    </item>
    <item>
      <title>C++ for beginners</title>
    </item>
  </page>
</channel>
这是我的测试代码:
$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(); 
我的问题是通道元素增加了一倍。 请帮忙。     

解决方法

我不认为这应该太难了:我认为使用using3来使您变得过于复杂。
$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();
    ,
$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();
输出量
<?xml version=\"1.0\"?>
<channel>    <page><item> <title>Advanced PHP Book</title> </item><item> <title>MySQL primer</title> </item><item> <title>C++ for beginners</title> </item></page></channel>
看见。     

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...