XDocument在写入时创建额外的字节

时间:2012-10-01 23:30:15

标签: linq-to-xml

我第一次尝试使用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。

0 个答案:

没有答案