【发布时间】:2011-10-11 13:37:55
【问题描述】:
我遇到的所有关于合并 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>
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>
像这样进入最终文档:
<?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>
文档内容相似,但可以有任意数量的子节点。我也想消除重复。我认为重复元素是具有相同属性的元素(基于属性名称和值)。有没有人看过这个实现的工作示例?我可以设想如何使用一些循环和一些递归来编写它,但对我来说,这似乎不是实现我想要的最佳方式:)
提前干杯和感谢!
* 编辑 *
既然共识是循环和递归是必须的,那么实现这一点的最优雅和最有效的方法是什么?我想这个问题的另一个基本问题是在迭代时比较节点的最佳方法是什么?
【问题讨论】:
-
我为客户实现了类似的东西。它的工作方式基本上与您实现它的方式相同:使用循环和递归。
-
我同意@DanielHilgarth。循环和递归基本上是完成此任务的最简单方法。
-
好问题。标题在其直接上下文中总是唯一的吗?
-
以上是我想要完成的大量简化视图,但在我的实际实现中,每个元素都有独特的元素。
标签: c# xml linq recursion linq-to-xml