我有一堆XML文件,如下所示:
<widget>
...
</widget>
在PHP中,我需要将它们组合成一个XML文件,如下所示:
<widgets>
<widget>
...
</widget>
<widget>
...
</widget>
<widget>
...
</widget>
</widgets>
这对于glob
和file_[get/put]_contents
来说是微不足道的,但是我想在DOMDocument中正确地做到这一点,因为它比这更多。我创建了一个DOMDocument
实例和一个包装元素,并在循环中使用appendChild()
将每个XML文件附加到所述元素中。不幸的是,我不断抛出各种错误,我只是不能把一些有用的东西放在一起。有什么想法吗?
答案 0 :(得分:1)
如果您想使用DOMDocument加载其他文件,它们本身就需要是有效的XML文件 - 即拥有一个根节点。完成后,以下代码应该有效:
// Given that $files is a list of file names of xml files to add
// Each xml file must be xml conformant - ie a single root node
$dest = new DOMDocument;
$root = $dest->createElement ('widgets');
$dest->appendChild ($root);
foreach ($files as $fn)
{
$doc = new DOMDocument ();
if ($doc->load ($fn))
{
foreach ($doc->documentElement->childNodes as $child)
{
// Copy deep for destination document
$child = $dest->importNode ($child, true);
$root->appendChild ($child);
}
}
}