作为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层深,并且可以在任何深度添加新节点。
关于我们如何执行此类合并的任何想法都将受到赞赏。