0

プロジェクトの設定を表すために DataSet を使用しています。多かれ少なかれコードは次のとおりです。

if (!ValidateSettings(SettingsPath)) //returns false if the settingsfile doesn't consist with the DataSet
{
  dsSettings defaultSettings = new dsSettings();
  defaultSettings.ReadXml("settingsTemplate.xml", IgnoreSchema);
  dsSettings.WriteXml(SettingsFilePath);
}

このコードを実行すると、テンプレート ファイル内のすべての値がコピーされ、それらが SettingsFilePath ファイルに書き込まれます (そのファイルの内容が上書きされます)。

ただし、将来、DataSet に設定を追加するとします。次に、古い設定 (ユーザーが編集した可能性があります) を残し、不足している設定のみをテンプレート ファイルから xml ファイルに追加します。

これは、いくつかのオプションまたは WriteXml 関数の何か、またはそれと同じくらい単純なもので実行できますか。または、既存の設定ファイルを読み取って各値を保存し、xml に書き込み、それらの保存された値で上書きする必要がありますか?

4

1 に答える 1

1

WriteXML を呼び出すたびに、有効な XML データの 1 つのブロックに XML が作成されます。ある意味では、1 つのルート要素が含まれます。したがって、別の呼び出しは別の XML ブロックを意味します。両方を一緒に保持すると、ルート ノードがないため、無効な XML ドキュメントが得られます。それが、あなたが望んでいることをとても簡単に達成できない理由です。

回避策を試すことができると言った:

  1. 指定したフォルダに必要な数のファイルを保存します。次に、それらをすべてデータテーブルに読み取り、それらを 1 つのデータテーブルにマージします。

  2. 独自の単一の XML ファイルを作成します。これを行うには、WriteXML メソッドを使用して XML を StringWriter に書き込みます。このような XML ブロックを 1 つの XML ブロックにマージするには、独自のルート レベル ノードを作成し、それらをディスクに書き込みます。同様に、readig は最初にファイルを読み取りますが、ルート ノード内から XML ブロックを抽出し、ReadXML を使用してストリームから読み取ります。

于 2012-04-12T11:47:51.937 に答える