我第一次尝试使用 XDocument,这似乎是一个不错的选择。但是,在我打开、修改和保存之后,另一个(较旧的 VB6)应用程序需要能够读取文件,但不能,因为文件开头有一些额外的不可见字节。请在此处查看随附的屏幕截图。在我使用 XDocument 保存之前,这 3 个字节不存在。这是代码,非常简单。
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);
一些搜索建议我将 Save 行更改为:
using (var writer = new XmlTextWriter(outputFile, null))
{
xmlFile.Save(writer);
}
但是,这会导致文件丢失格式;输出文件都在一行上。它与保存到加载的同一个文件有关,因为如果我保存到第二个文件名,它会很好用。
有谁知道开头的额外字节是否可以避免,如果不能,建议一个有用的模式来打开、修改和保存回同一个文件?我可以回到 XmlTextReader/Writer,但我真的很喜欢 XDocument。