【发布时间】:2014-03-31 16:08:43
【问题描述】:
我有两个结构相似的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>
这两个文件的共同属性是 ProductId。我需要合并所有属性,以便合并后的文件如下所示:
<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 将所有属性合并到一个基于通用 ProductId 的记录中?我宁愿不进入 XSLT。
任何帮助将不胜感激。
提前致谢。
【问题讨论】:
标签: php xml xml-parsing merge