ユーザークラスのList<T>をXMLにシリアライズするサンプルです。
using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
using System.Xml.Serialization;
public class Pageinfo
{
public string File {get; set;}
public int X {get; set;}
public int Y {get; set;}
public int Width {get; set;}
public int Height {get; set;}
}
class XmlSample
{
static void Main()
{
List pages = new List();
pages.Add(new Pageinfo
{
File = "264.png",
X = 0,
Y = 0,
Width = 800,
Height = 600,
});
pages.Add(new Pageinfo
{
File = "265.png",
X = 0,
Y = 0,
Width = 800,
Height = 600,
});
// xmlファイル
const string xmlFile = @"D:\csharp\CvEditor\pages.xml";
// シリアライズする
var xmlSerializer1 = new XmlSerializer(typeof(List));
using (var streamWriter = new StreamWriter(xmlFile, false, Encoding.UTF8))
{
xmlSerializer1.Serialize(streamWriter, pages);
streamWriter.Flush();
}
// デシリアライズする
var xmlSerializer2 = new XmlSerializer(typeof(List));
List result;
var xmlSettings = new System.Xml.XmlReaderSettings
{
CheckCharacters = false,
};
using (var streamReader = new StreamReader(xmlFile, Encoding.UTF8))
using (var xmlReader = System.Xml.XmlReader.Create(streamReader, xmlSettings))
{
result = (List)xmlSerializer2.Deserialize(xmlReader);
}
// 結果を出力
foreach(var page in result)
{
Console.WriteLine("{0}",page.File);
}
}
}
コメント