初めて XDocument を使用しようとしていますが、これは優れたオプションのようです。ただし、開いて変更し、保存した後、別の (古い VB6) アプリケーションがファイルを読み取れる必要がありますが、ファイルの先頭に余分な目に見えないバイトがあるため、読み取れません。ここに添付のスクリーンショットを参照してください。これらの 3 バイトは、XDocument を使用して保存する前にはありませんでした。これがコードです。かなり単純です。
XDocument xmlFile = XDocument.Load(outputFile);
var query = from c in xmlFile.Elements("LOG_CFG").Elements("LogControl").Elements("LogFileAttributes").Elements("LogFileName")
select c;
foreach (XElement element in query)
{
element.Value = GetLogCfgLogFileName(name);
}
xmlFile.Save(outputFile);
一部の検索では、保存行を次のように変更することが提案されました。
using (var writer = new XmlTextWriter(outputFile, null))
{
xmlFile.Save(writer);
}
ただし、それによりファイルのフォーマットが失われます。出力ファイルはすべて 1 行です。ロードされたのと同じファイルに保存することと関係があります.2番目のファイル名に保存するとうまくいくからです。
最初の余分なバイトが回避可能かどうかを知っている人はいますか?そうでない場合は、同じファイルを開いて変更し、保存するための便利なパターンを提案しますか? XmlTextReader/Writer に戻ることもできますが、私は XDocument が大好きです。