合并XML文件

时间:2015-11-11 19:28:32

标签: c# xml visual-studio linq-to-xml

作为Visual Studio中构建过程的一部分,我们需要将多个(200+)xml文件合并到一个文件中。我们的挑战是单个文件在xml结构中保持不同的深度。

以下是我们尝试做的简化示例:

文件1:对象1的UI

的UI配置
<configuration>
    <group name="UI">
      <group name = "Object 1">
        <setting name="label" value="This is Object 1">
        <setting name="mode" value="edit" />
        <setting name="etc" value="..." />
      </group>
    </group>
</configuration>

文件2:对象2的UI

的UI配置
<configuration>
    <group name="UI">
      <group name = "Object 2">
        <setting name="label" value="This is Object 2">
        <setting name="mode" value="edit" />
        <setting name="etc" value="..." />
      </group >
    </group>
</configuration>

文件3:Schedlue config

<configuration>
    <group name="Scheduler">
      <setting name="numTaskRunnerThreads" value="1" />
      <setting name="sleepTimeSeconds" value="60" />
      <list name="jobs">
        <group name="Job 1">
        </group>
      </list>
    </group>
</configuration>

运行构建时,需要合并这3个文件以产生以下结构。

<configuration>
    <group name="UI">
      <group name = "Object 1">
        <setting name="label" value="This is Object 1">
        <setting name="mode" value="edit" />
        <setting name="etc" value="..." />
      </group>
      <group name = "Object 2">
        <setting name="label" value="This is Object 2">
        <setting name="mode" value="edit" />
        <setting name="etc" value="..." />
      </group >
    </group>
    <group name="Scheduler">
      <setting name="numTaskRunnerThreads" value="1" />
      <setting name="sleepTimeSeconds" value="60" />
      <list name="jobs">
        <group name="Job 1">
        </group>
      </list>
    </group>
</configuration>

文件1和2已合并在&#34; UI&#34;节点和文件3已在&#34;配置&#34;中合并。节点。从逻辑上讲,此合并基于查找文件结构之间最深的公共节点。 注意:在现实世界中,这些破坏性的公共节点在结构中可以是5或6层深,并且可以在任何深度添加新节点。

关于我们如何执行此类合并的任何想法都将受到赞赏。

0 个答案:

没有答案