.NETでは、Soap形式でのシリアライズもサポートされています。
やり方は、バイナリ形式とほぼ同じで利用するフォーマッターを
BinaryFormatterからSoapFormatterに変更するだけです。
移植性をあげたり、Webサービス経由でデータをやり取りする必要が
ある場合は便利な形です。
以下サンプルです。
// vim:set ts=4 sw=4 et ws is nowrap ft=cs: using System; using System.IO; using System.Runtime.Serialization; using System.Runtime.Serialization.Formatters.Soap; namespace Gsf.Samples.CSharp{ [Serializable] public class SoapSerializableClass{ string _value; public string Value{ get{ return _value; } set{ _value = value; } } } class SoapSerializeSample{ const string FILE_NAME = "SoapSerializableClass.xml"; public void Execute(){ try{ SoapSerializableClass obj = new SoapSerializableClass(); obj.Value = obj.GetType().Name; // // 使用するフォーマッターを作成. // IFormatter formatter = new SoapFormatter(); // // シリアライズ. // using(Stream stream = new FileStream(FILE_NAME, FileMode.Create, FileAccess.Write)){ formatter.Serialize(stream, obj); } // // 出力内容を確認. // using(TextReader reader = new StreamReader(FILE_NAME)){ for(string line = null; (line = reader.ReadLine()) != null; Console.WriteLine(line)); } // // デシリアライズ. // using(Stream stream = new FileStream(FILE_NAME, FileMode.Open, FileAccess.Read)){ SoapSerializableClass deObj = formatter.Deserialize(stream) as SoapSerializableClass; Console.WriteLine(deObj.Value); } }finally{ // // 後始末. // File.Delete(FILE_NAME); } } static void Main(){ new SoapSerializeSample().Execute(); } } }