これから、メモ代わりにちょこちょことしたサンプルを
記述していく予定です。
System.Xml.Serialization.XmlSerializer
クラスを使用します。
コンストラクタにシリアライズをしたいクラスのTypeを
渡せば、後はSerialize, Deserializeメソッドを呼ぶだけです。
// vim:set ts=4 sw=4 et ws is nowrap ft=cs: using System; using System.IO; using System.Xml.Serialization; namespace Gsf.Samples.CSharp{ public class MySerializableClass{ public string PublicField; private string _propertyValue; public string PropertyValue{ get{ return _propertyValue; } set{ _propertyValue = value; } } } public class XMLSerializeSample{ const string FILE_NAME = "MySerializableClass.xml"; public void Execute(){ ///////////////////////////////////////////////////////////////////////////// // [注意点] // シリアライズを行う場合は、そのクラスのスコープがpublicでないといけない. // try{ MySerializableClass obj = new MySerializableClass(); obj.PublicField = "public field value."; obj.PropertyValue = "property value."; // // シリアライズ. // XmlSerializer serializer = new XmlSerializer(typeof(MySerializableClass)); using(TextWriter writer = new StreamWriter(FILE_NAME)){ serializer.Serialize(writer, obj); } // // 出力内容を表示. // using(TextReader reader = new StreamReader(FILE_NAME)){ for(string line = null; (line = reader.ReadLine()) != null; Console.WriteLine(line)); } // // デシリアライズ. // using(TextReader reader = new StreamReader(FILE_NAME)){ MySerializableClass deObj = serializer.Deserialize(reader) as MySerializableClass; Console.WriteLine(deObj.PublicField); Console.WriteLine(deObj.PropertyValue); } }finally{ // // 後始末. // File.Delete(FILE_NAME); } } static void Main(){ new XMLSerializeSample().Execute(); } } }