【发布时间】:2017-06-07 14:39:15
【问题描述】:
我正在尝试将具有相同结构的多个 XML 文件合并到一个文件中。
这是我的 XML 文件的结构:
file1.xml:
<root information="file1">
<items>
<item>FOO</item>
<item>BAR</item>
</items>
</root>
file2.xml:
<root information="file2">
<items>
<item>BAR</item>
<item>FOO</item>
</items>
</root>
使用此代码,我已经能够将它们组合起来:
$files= array(
'file1.xml',
'file2.xml'
);
$dom = new DOMDocument();
$dom->appendChild($dom->createElement('root'));
foreach ($files as $filename) {
$addDom = new DOMDocument();
$addDom->load($filename);
if ($addDom->documentElement) {
foreach ($addDom->documentElement->childNodes as $node) {
$dom->documentElement->appendChild(
$dom->importNode($node, TRUE)
);
}
}
}
$dom->save('output.xml');
这部分有效,但删除了具有我仍然需要的信息属性的原始根元素。所以我想保留所有现有的根元素,但将它们包装在一个新的根元素中。这就是我想要的结果:
<files>
<root information="file1">
<items>
<item>FOO</item>
<item>BAR</item>
</items>
</root>
<root information="file2">
<items>
<item>BAR</item>
<item>FOO</item>
</items>
</root>
</files>
但我不知道如何附加文件。无论我尝试什么,它都只会出现在输出文件的底部,而不是附加所有旧的根元素。我猜这很简单,但我就是想不通。非常感谢您的帮助!
【问题讨论】:
-
为什么要使用
DOMDocument而不是直接将它们附加到新文件中? -
为什么要麻烦 XML 处理?只需回显您的开始标签,转储文件,回显您的结束标签。