php xml数据拼接,在PHP中合并XML文件
我有2個文件,1.xml并且2.xml兩個文件的結構相似,我想擁有一個。我嘗試了許多解決方案,但只有錯誤-坦白地說,我不知道這些腳本是如何工作的。
1.xml:
1
Title 1Author 1
...
2.xml:
190
Title 190Author 190
...
我想merged.xml用以下結構創建一個新文件
1
Title 1Author 1
... //items from 1.xml
190
Title 190Author 190
... //items from 2.xml
我應該怎么做?你能解釋一下方法嗎?如何處理更多文件?謝謝
編輯
我嘗試了什么?
function mergeXML(&$base, $add)
{
if ( $add->count() != 0 )
$new = $base->addChild($add->getName());
else
$new = $base->addChild($add->getName(), $add);
foreach ($add->attributes() as $a => $b)
{
$new->addAttribute($a, $b);
}
if ( $add->count() != 0 )
{
foreach ($add->children() as $child)
{
mergeXML($new, $child);
}
}
}
$xml = mergeXML(simplexml_load_file('1.xml'), simplexml_load_file('2.xml'));
echo $xml->asXML(merged.xml);
?>
編輯2
遵循Torious的建議,我查看了DOMDocument手冊并找到了一個示例:
function joinXML($parent, $child, $tag = null)
{
$DOMChild = new DOMDocument;
$DOMChild->load($child);
$node = $DOMChild->documentElement;
$DOMParent = new DOMDocument;
$DOMParent->formatOutput = true;
$DOMParent->load($parent);
$node = $DOMParent->importNode($node, true);
if ($tag !== null) {
$tag = $DOMParent->getElementsByTagName($tag)->item(0);
$tag->appendChild($node);
} else {
$DOMParent->documentElement->appendChild($node);
}
return $DOMParent->save('merged.xml');
}
joinXML('1.xml', '2.xml')
但是它創建了錯誤的xml文件:
1
Title 1Author 1
...
190
Title 190Author 190
...
而且我無法正確使用此文件。我需要正確的結構,在這里我可以將一個文件粘貼到另一個文件中。我只想“粘貼”項目的所有標簽。我應該改變什么?
編輯3
這是一個答案-基于Torious的答案-只是根據我的需要進行了調整-檢查//編輯
$doc1 = new DOMDocument();
$doc1->load('1.xml');
$doc2 = new DOMDocument();
$doc2->load('2.xml');
// get 'res' element of document 1
$res1 = $doc1->getElementsByTagName('items')->item(0); //edited res - items
// iterate over 'item' elements of document 2
$items2 = $doc2->getElementsByTagName('item');
for ($i = 0; $i < $items2->length; $i ++) {
$item2 = $items2->item($i);
// import/copy item from document 2 to document 1
$item1 = $doc1->importNode($item2, true);
// append imported item to document 1 'res' element
$res1->appendChild($item1);
}
$doc1->save('merged.xml'); //edited -added saving into xml file
總結
以上是生活随笔為你收集整理的php xml数据拼接,在PHP中合并XML文件的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 中国四成电动汽车卖到欧洲!我国成全球最大
- 下一篇: php 堵塞 消息队列,PHP的并发处理