【发布时间】:2016-09-23 02:25:50
【问题描述】:
我只是想反序列化,然后当我的对话框再次关闭时,在我的 WPF 应用程序中序列化一个 XML 文件。好吧,这在大多数情况下都有效,但有时,我文件中的某些字符完全丢失,它们只是消失了,使文件无法使用。我的代码:
public static void WriteXML(MyModel MyModel)
{
try
{
XmlSerializer serializer = new XmlSerializer(typeof(MyModel));
using (var stream = new FileStream(fileName, FileMode.OpenOrCreate))
{
serializer.Serialize(stream, MyModel);
}
}
catch (Exception e)
{
//...
}
}
我的 XML 文件前后看起来有点像:
<?xml version="1.0"?>
<MainModel xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Main>
<SomeModel>
<ID>1</ID>
<Name>Af</Name>
<SomeMonth>February</SomeMonth>
<Level>10</Level>
<Out>120</Out>
<Hyb>true</Hyb>
</SomeModel>
<SomeModel>
<ID>2</ID>
<Name>Alm</Name>
<SomeMonth>March</SomeMonth>
<Level>5</Level>
<Out>90</Out>
<Hyb>true</Hyb>
</SomeModel>
</Main>
</MainModel>
之后:
<?xml version="1.0"?>
<MainModel xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><SomeModel>
<ID>1</ID>
<Name>Af</Name>
<SomeMonth>February</SomeMonth>
<Level>10</Level>
<Out>120</Out>
<Hyb>true</Hyb>
</SomeModel>
<SomeModel>
<ID>2</ID>
<Name>Alm</Name>
<SomeMonth>March</SomeMonth>
<Level>5</Level>
<Out>90</Out>
<Hyb>true</Hyb>
</SomeModel>
</Main>
</MainModel>
【问题讨论】:
-
你能转储
MyModel类代码 -
你确定你为之后粘贴了正确的 Xml 吗?关闭 没有匹配的开始标记。
-
你知道过程中丢失了哪些字符吗?除了缺少的开始标签之外,我似乎在您发布之前和之后没有看到任何变化。会不会是您试图发送无效的 XML 字符?
标签: c# xml wpf xml-parsing xmlserializer