我必须序列化多个自定义对象,如Customer,Store等。每个对象只有属性,对象彼此没有关系。我必须序列化为XML,并反序列化回自定义对象。
我怎样才能在C#中做到这一点?
答案 0 :(得分:1)
按如下方式生成xsd:
"$(Registry:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v7.0A\@InstallationFolder)\bin\xsd.exe" /n:"$(ProjectName).Namespace" "$(ProjectDir)\<YourXML>"
这应该是1次,因为您的验证将保持不变。
在项目中创建一个prebuild事件,用于生成类,如下所示:
<PreBuildEvent>
"$(Registry:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v7.0A\@InstallationFolder)\bin\xsd.exe" /n:"$(ProjectName).Namespace" "$(ProjectDir)\<YourXSD>" /c /o:"$(ProjectDir)\<GeneratedClassFolder>"
</PreBuildEvent>
然后,您可以使用内置的.NET XMLSerializer将类编写为XML文件。
答案 1 :(得分:0)
您可以制作定义班级的XSD
文件。然后,您可以使用内置的.NET XMLSerializer将类编写到XML文件中。您可以使用XSD在反序列化期间验证输入。
或者您可以为您的班级应用Serializable属性。
答案 2 :(得分:0)
快速谷歌在Switch On上展示了this article代码,其中包含有关如何序列化和反序列化为XML的示例。这是一个关于序列化和反序列化对象的代码示例。
static public void SerializeToXML<_type>(_type item,string fileName)
{
XmlSerializer serializer = new XmlSerializer( item.GetType() );
TextWriter textWriter = new StreamWriter( fileName );
serializer.Serialize(textWriter, item);
textWriter.Close();
}
static _type DeserializeFromXML<_type>(string fileName)
{
XmlSerializer deserializer = new XmlSerializer(typeof(_type));
TextReader textReader = new StreamReader( fileName );
_type item = (_type)deserializer.Deserialize(textReader);
textReader.Close();
return item;
}