递归合并两个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

上一篇: Merge two XML files recursively

下一篇: Open Android App by sending a text message?