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 に答える