我有不同的XML配置,具体取决于我连接的面板类型。
大多数面板具有相同的配置,但不同之处在于新版本。
e.g。
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中必须被覆盖的任何元素。但如果那个轮子已经被发明了,我不想重新发明它。
答案 0 :(得分: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文件中的新值覆盖。