序列化到XML文件创建无效的XML文档(11,12)
问题描述:
我试图将一个类保存到XML文档中。 类看起来是这样的:序列化到XML文件创建无效的XML文档(11,12)
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;
}
数据IST通过该存储:
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);
指定操作系统应创建一个新文件。如果文件已经存在,它将被覆盖。这需要FileIOPermissionAccess.Write权限。 FileMode.Create相当于请求如果该文件不存在,请使用CreateNew;否则,使用截断。如果该文件已经存在但是隐藏文件,则会引发UnauthorizedAccessException异常。
+0
完美,工作。 –
这是一个骗局。但简单地通过用Create创建'OpenOrCreate'来解决这个问题。 –
@klashar - 不,那个人甚至都不是。 –