我有兩個具有相似結構的xml文件,我需要根據一個公共屬性合併它們。爲了更加明確,這裏有兩個樣本:根據公共屬性合併兩個xml文件
file1.xml
<Products>
<record ProductId="366" ProductName="Test" ProductCategory="Categ1"></record>
</Products>
file2.xml
<Productprices>
<record ProductId="366" ProductPrice="10" ProductVAT="24"></record>
</Productprices>
的共同屬性,這兩個文件是產品編號。我需要合併所有屬性,使合併後的文件應該是這樣的:
<Products>
<record ProductId="366" ProductName="Test" ProductCategory="Categ1" ProductPrice="10" ProductVAT="24"></record>
</Products>
不幸的是,我已經設法到目前爲止做的僅僅是合併這兩個文件,合併文件看起來是這樣的:
<Products>
<record ProductId="366" ProductName="Test" ProductCategory="Categ1"></record>
<record ProductId="366" ProductPrice="10" ProductVAT="24"></record>
</Products>
這是我使用的PHP代碼:
$doc1 = new DOMDocument();
$doc1->load('file1.xml');
$doc2 = new DOMDocument();
$doc2->load('file2.xml');
$res1 = $doc1->getElementsByTagName('Products')->item(0);
$items2 = $doc2->getElementsByTagName('record');
for ($i = 0; $i < $items2->length; $i ++) {
$item2 = $items2->item($i);
$item1 = $doc1->importNode($item2, true);
$res1->appendChild($item1);
}
$doc1->save('file1.xml');
有什麼辦法,我可以根據使用的DomDocument共同融合產品編號的所有屬性到一個記錄?我寧願不進入XSLT。
任何幫助將不勝感激。
在此先感謝。
看起來不錯,但是我遇到了一個小問題(我在這方面很新穎)。我試圖加載這樣的兩個XML文件:$ xmlOne ='/var/www/html/test/file1.xml'和$ xmlTwo ='/var/www/html/test/file2.xml',但我得到在PHP中的以下錯誤:DOMDocument :: loadXML()期望參數1是字符串,對象給出在...我試過一切,我可以找到將XML對象變成一個字符串,但我不能得到任何工作。你能否指點我正確的方向?非常感謝你。 –
DOMDocument :: loadXml()用於xml字符串,DOMDocument :: load()用於xml文件。 – ThW
得到它的工作。我欠你一個,非常感謝。 –