递归合并两个XML文件
我想将2个XML文件合并成一个递归的。 例如 :
第一档:
<root>
<branch1>
<node1>Test</node1>
</branch1>
<branch2>
<node>Node from 1st file</node>
</branch2>
</root>
第二档:
<root>
<branch1>
<node2>Test2</node2>
</branch1>
<branch2>
<node>This node should overwrite the 1st file branch</node>
</branch2>
<branch3>
<node>
<subnode>Yeah</subnode>
</node>
</branch3>
</root>
合并文件:
<root>
<branch1>
<node1>Test</node1>
<node2>Test2</node2>
</branch1>
<branch2>
<node>This node should overwrite the 1st file branch</node>
</branch2>
<branch3>
<node>
<subnode>Yeah</subnode>
</node>
</branch3>
</root>
我想把第二个文件添加到第一个文件中。 当然,合并可以用XML的任何深度完成。
我在Google上搜索过,没有找到正确运行的脚本。
你能帮我吗 ?
xml2array是一个将xml文档转换为数组的函数。 一旦创建了两个数组,您可以使用array_merge_recursive
来合并它们。 然后,您可以使用XmlWriter
将数组转换回xml(应该已经安装)。
这是来自PHP手册页的评论的很好的解决方案,也与属性一起工作:
function append_simplexml(&$simplexml_to, &$simplexml_from)
{
foreach ($simplexml_from->children() as $simplexml_child)
{
$simplexml_temp = $simplexml_to->addChild($simplexml_child->getName(), (string) $simplexml_child);
foreach ($simplexml_child->attributes() as $attr_key => $attr_value)
{
$simplexml_temp->addAttribute($attr_key, $attr_value);
}
append_simplexml($simplexml_temp, $simplexml_child);
}
}
还有一些使用情况。
链接地址: http://www.djcxy.com/p/53109.html