簡體   English   中英

將多個自定義對象序列化和反序列化為XML

[英]Serialize and deserialize multiple custom objects to XML

我必須序列化多個自定義對象,例如Customer,Store等。每個對象只有屬性,而對象之間沒有關系。 我必須序列化為XML,然后反序列化為自定義對象。

如何在C#中做到這一點?

生成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文件來定義您的類。 然后,您可以使用內置的.NET XMLSerializer將您的類寫入XML文件。 您可以使用XSD在反序列化期間驗證輸入。

或者,您可以為您的類應用Serializable屬性。

一位快速的google在“開啟代碼上揭示了這篇文章 ,並提供了有關如何序列化和反序列化為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;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM