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

Serializing to XML file creates invalid XML document (11,12)

我正在尝试将 class 保存到 XML 文档中。 class 看起来像这样:

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>>>

你能告诉我为什么吗?

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

而不是 FileMode.OpenOrCreate(打开文件并在文件存在的情况下保持其内容不变),使用 FileMode.Create:

FileStream outFile = File.Open(MySettingsFile, FileMode.Create);

FileMode.Create的描述:

Specifies that the operating system should create a new file. If the file already exists, it will be overwritten. This requires FileIOPermissionAccess.Write permission. FileMode.Create is equivalent to requesting that if the file does not exist, use CreateNew; otherwise, use Truncate. If the file already exists but is a hidden file, an UnauthorizedAccessException exception is thrown.