我必须序列化多个自定义对象,如Customer,Store等。每个对象只有属性,而对象之间没有任何关系。我必须序列化为XML,并反序列化回自定义对象。将多个自定义对象序列化并反序列化为XML
如何在C#中执行此操作?
我必须序列化多个自定义对象,如Customer,Store等。每个对象只有属性,而对象之间没有任何关系。我必须序列化为XML,并反序列化回自定义对象。将多个自定义对象序列化并反序列化为XML
如何在C#中执行此操作?
你可以制作一个XSD
文件来定义你的类。然后,您可以使用内置的.NET XMLSerializer将您的类写入XML文件。您可以使用XSD在反序列化过程中验证输入。
或者您可以为您的课程应用Serializable属性。
一个快速的谷歌显示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;
}
这是否适用于领域? – user807566
是的,你可能想看看这个MSDN文章如何获得更多的序列化控制:http://msdn.microsoft.com/en-us/library/2baksw0z(v=vs.80).aspx –
生成XSD如下:
"$(Registry:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v7.0A\@InstallationFolder)\bin\xsd.exe" /n:"$(ProjectName).Namespace" "$(ProjectDir)\<YourXML>"
这应该是1次的事情,因为你的验证将保持不变。
在项目中创建一个预生成事件如下生成类:
<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文件。
你可以在没有XSD的情况下做到这一点 –