我必須序列化多個自定義對象,如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的情況下做到這一點 –