○クラス入りの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#