3

インストール プロセスの一環として、app.config ファイルのいくつかの値を更新します。このファイルは、ユーザーが値を読みやすいように作成およびインデントされています。これはセクションに組み込まれており、各セクションは XElement であり、各値は XAttribute です。

これはセクションのサンプルです:

<DataAccessSection
  DataMappingFile = "Data\Mapping.xml"
  SchemaKeyWord = "[generated]"
/>
<ServiceManagementSection
  ServerName = "dummy"
  ServerIP = "1.0.0.0"
  Port = "1"
/>

XDocument を使用してファイルを編集し、セクションの XElement にアクセスして XAttribute の値を変更し、次を使用して変更を保存します。xDocument.Save(fullpath);

ファイルを保存すると、構成ファイルの構造は次のようになります。

<DataAccessSection DataMappingFile="Data\Mapping.xml" SchemaKeyWord="[generated]" />
<ServiceManagementSection ServerName="dummy" ServerIP="1.0.0.0" Port="1" />

この構造はユーザーにとってあまり明確ではありません。ファイルを初期構造のままにして、インデントではなく値のみを変更するにはどうすればよいですか?

単純なテキスト ファイルとして開いて編集することはできますが、構造化された XML ファイルの機能がある場合、テキスト ファイルのようにアクセスするのはばかげているように思えます。

編集:回答ありがとうございます。

回答の解決策を試しましたが、空白とインデントが削除され続けます。また、次を使用してロードしようとしました:

XDocument.Load(fullPath, LoadOptions.PreserveWhiteSpaces);

しかし、それは私の問題を解決しません。すべての空白を保持する唯一の方法は、それをテキスト ファイルとしてロードし、文字列操作を使用して編集することですが、私はそうしたくありません。

この問題を解決する別のアプローチを持っている人はいますか?

XML編集用に別のパッケージを使用している可能性がありますか?

4

2 に答える 2

6

xDocument.Load を呼び出すときは LoadOptions.PreserveWhitespace を使用し、保存するときは SaveOptions.DisableFormatting を使用します。

于 2012-09-10T08:32:04.077 に答える
2

試す :

yourDoc.Save(fullpath, SaveOptions.DisableFormatting);

ドキュメントから:

DisableFormatting : シリアル化中に重要でない空白をすべて保持します。

于 2012-09-10T08:31:47.540 に答える