Php XML与DOM的结合
我正在尝试通过添加中间级节点来重新格式化XML 以下是我的输入: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
高级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();