合并xml文档

nok*_*nal 12 c# xml linq recursion linq-to-xml

我遇到的有关合并XML文档的所有解决方案都无法满足我的需求.让我解释:

XML文档1:

<?xml version="1.0" encoding="utf-8" ?>
<a>
    <b title="Original Section">
        <b title="Original Child Section"></b>
        <b title="Original Child Section 2"></b>
    </b>
</a>
Run Code Online (Sandbox Code Playgroud)

XML文档2:

<?xml version="1.0" encoding="utf-8" ?>
<a>
    <b title="New Section">
        <b title="New Child Section"></b>
    </b>
    <b title="Original Section">
        <b title="Original Child Section">
            <b title="New Child For Old Section"></b>
        </b>
    </b>    
</a>
Run Code Online (Sandbox Code Playgroud)

进入这样的最终文档:

<?xml version="1.0" encoding="utf-8" ?>
<a>
    <b title="Original Section">
        <b title="Original Child Section">
            <b title="New Child For Old Section"></b>
        </b>
        <b title="Original Child Section 2"></b>
    </b>    
    <b title="New Section">
        <b title="New Child Section"></b>
    </b>
</a>
Run Code Online (Sandbox Code Playgroud)

文档内容相似,但可以有任意数量的子节点.我也想消除重复.我认为重复是具有相同属性的元素(基于属性名称和值).有谁见过这个实现的工作示例?我可以设想如何使用一些循环和一些递归来编写它,但对我来说,这似乎不是实现我想要的最佳方式:)

欢呼并提前致谢!

* 编辑 *

既然共识是循环和递归是必须的,那么最优雅和有效的方法是什么呢?我想这个问题的另一个基本问题是在迭代时比较节点的最佳方法是什么?

Joh*_*don 1

最终这个问题的任何解决方案都将归结为循环和/或递归。您正在谈论基本的集合论,linq 可能对于提炼该过程很有用,但它最终将迭代两个集合并合并结果。