0

根据我连接到的面板类型,我有不同的 XML 配置。

大多数面板具有相同的配置,但差异在于较新的版本。

例如

1.0版面板有以下

  <panel version="1.0">
    <options opt1="1823" opt2="7" opt3="127"/>
    <timers>
      <t1 min="0" max="99" />
      <t2 min="0" max="99" />      
    </timers>
  </panel>

和版本 1.1 具有完全相同的配置,除了它具有不同的值opt1

  <panel version="1.1">
    <options opt1="7967" /> <!-- opt2 and opt3 are exactly the same -->
    <!-- the timer values are all exactly the same -->
  </panel>

问题 有没有办法让我加载面板 1.0 的配置并自动覆盖面板 1.1 的差异?即.net 框架中是否有一些东西可以比较 2 个 xml 文件并将 1 与另一个文件的差异覆盖?

如果没有,我可以将配置从面板 1.0 复制到面板 1.1,但这会复制大量数据,我正试图避免这种情况。

我也可以先加载面板 1.0,然后搜索 1.1 中必须被覆盖的任何元素。但如果那个轮子已经被发明了,我不想重新发明它。

4

1 回答 1

0

这成功了:

foreach (var el in panelV11.Descendants())
{
    var elName = el.Name;
    foreach (var attrib in el.Attributes())
    {
        var attrName = attrib.Name;

        panelV10.Element(elName).Attribute(attrName).Value = attrib.Value;
    }
}

然后只用panelV10作主配置文件,旧值被 1.1 文件中的新值覆盖。

于 2012-05-09T09:43:30.620 回答