2011-07-31 13 views
0

顧客、店舗などのような複数のカスタムオブジェクトをシリアル化する必要があります。各オブジェクトはプロパティのみを持ち、オブジェクトは互いに関係しません。 XMLにシリアライズし、カスタムオブジェクトにデシリアライズする必要があります。複数のカスタムオブジェクトをXMLにシリアル化および逆シリアル化

どのようにC#でこれを行うことができますか?

答えて

0

XSDファイルを作成してクラスを定義することができます。次に、組み込みの.NET XMLSerializerを使用して、クラスをXMLファイルに書き込むことができます。デシリアライズ中に入力を検証するには、XSDを使用できます。

また、クラスにSerializable属性を適用することもできます。

+0

XSDなしでこれを行うことができます –

0

急いでgoogleが明らかにthis article on Switch onコードをシリアライズして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; 
} 
+0

これはフィールドで機能しますか? – user807566

+1

ええ、シリアル化をより詳細に制御する方法については、このmsdnの記事を参照してください。http://msdn.microsoft.com/en-us/library/2baksw0z(v=vs.80).aspx –

1

次のように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> 

次にあなたがXMLファイルに自分のクラスを書くために、.NETのXmlSerializerで構築を使用することができます。

関連する問題