序列化为XML文件会创建无效的XML文档(11,12)

时间:2017-02-16 09:43:03

标签: c# xml serialization xml-serialization xmlserializer

我试图将类保存到XML文档中。 该课程看起来像这样:

public class Settings
{
    public LDAP LDAP;
    public Miscellaneous Miscellaneous;
}

public class LDAP
{
    public bool LoadLDAPData;
    public bool ShowLDAPRoutingMessage;
}

public class Miscellaneous
{
    public bool MinusBeforeQuestion;
    public bool MinusBeforeDescription;
}

数据通过以下方式存储:

Settings MySettings = new Settings();
string MySettingsFile = @"settingsfile.xml";
...
FileStream outFile = File.Open(MySettingsFile, FileMode.OpenOrCreate);
XmlSerializer formatter = new XmlSerializer(MySettings.GetType());
formatter.Serialize(outFile, MySettings);
outFile.Close();

数据已保存,但最后有一个问题:

<Settings...>
...
</Settings>>>

你能告诉我为什么吗?

1 个答案:

答案 0 :(得分:2)

这种情况正在发生,因为您正在编写的内容比文件的现有内容短,因此有些文本留在最后。

使用FileMode.OpenOrCreate代替FileMode.Create(如果文件存在,则打开文件并使其内容保持不变),而不是FileStream outFile = File.Open(MySettingsFile, FileMode.Create);

null

FileMode.Create的说明:

  

指定操作系统应创建新文件。如果该文件已存在,则将被覆盖。这需要FileIOPermissionAccess.Write权限。 FileMode.Create等同于请求如果文件不存在,则使用CreateNew;否则,请使用截断。如果文件已存在但是是隐藏文件,则会抛出UnauthorizedAccessException异常。