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