○クラス入りのArrayListをXML形式で保存・読み出し

using System;

[Serializable]
public class data//XMLシリアライズにはpublicクラスの必要がある
{
	public String str;//public変数しかXMLとして保存されない。
	public data(){}//XMLシリアライズにはコンストラクタが必要
	public data(String strPos)
	{
		str=strPos;
	}
	public void show()
	{
		Console.WriteLine(str);
	}
}



class Class1
{
	static void Main(string[] args)
	{
		Class1 obj=new Class1();
	}

	public Class1()
	{
	{//ファイルへ保存
		System.Collections.ArrayList ar = new System.Collections.ArrayList();
		ar.Add(new data("test1"));
		ar.Add(new data("test2"));
		ar.Add(new data("test3"));
		ar.Add(new data("test4"));
		SaveFile(ar,"test.txt");
	}
	{//ファイルから読み出し
		System.Collections.ArrayList ar=LoadFile("test.txt");
		for(int i=0;i<ar.Count;i++) ((data)ar[i]).show();
	}	
		Console.Read();
	}
	private void SaveFile(System.Collections.ArrayList ar,System.String filename)
	{
		System.IO.FileStream fs = new System.IO.FileStream(filename,System.IO.FileMode.Create );
		System.Xml.Serialization.XmlSerializer sr= new System.Xml.Serialization.XmlSerializer(typeof(System.Collections.ArrayList),new Type[] {typeof(data)});
		sr.Serialize(fs,ar);
		fs.Close();
	}
	private System.Collections.ArrayList LoadFile(System.String filename)
	{
		System.IO.FileStream fs = new System.IO.FileStream(filename,System.IO.FileMode.Open );
		System.Xml.Serialization.XmlSerializer sr= new System.Xml.Serialization.XmlSerializer(typeof(System.Collections.ArrayList),new Type[] {typeof(data)});
		System.Collections.ArrayList ar=(System.Collections.ArrayList )sr.Deserialize(fs);
		fs.Close();
		return ar;
	}
}

処理結果
test1
test2
test3
test4


出力されたtest.txtの内容

<?xml version="1.0"?>
<ArrayOfAnyType xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <anyType xsi:type="data">
    <str>test1</str>
  </anyType>
  <anyType xsi:type="data">
    <str>test2</str>
  </anyType>
  <anyType xsi:type="data">
    <str>test3</str>
  </anyType>
  <anyType xsi:type="data">
    <str>test4</str>
  </anyType>
</ArrayOfAnyType>



▲トップページ > Visual BASIC と C#