最近は設定関連をXMLで記述するのがはやっている模様。大体は、以下の手順で行っているはず。
というわけで、必要な物は「設定ファイル(xmlファイル)」と「DTO相当のクラス(*.csファイル)」というわけです。
シンプル例
- 実行コード
using System; using System.Xml.Serialization; using System.IO; using XmlReadSmp.Dto; class Program { static void Main(string[] args) { XmlSerializer xs = new XmlSerializer(typeof(MessageInfo)); MessageInfo info = xs.Deserialize(new FileStream(@"XMLFile01.xml", FileMode.Open)) as MessageInfo; Console.WriteLine("info message = {0}", info.Message); //前はバカか! } }
- XMLFile01.xmlファイル
<?xml version="1.0" encoding="utf-8" ?> <MessageInfo> <Message>お前はバカか!</Message> <Condition>不機嫌</Condition> </MessageInfo>
- SerializeDto.cs
using System; using System.Collections.Generic; namespace XmlReadSmp.Dto { public class MessageInfo { public string Message{get;set;} public string Condition { get; set; } } }
配列を含んでいる場合
配列を含んでいる場合についても実行してみます。基本的には「シンプル例」で使用したソースコードを拡張しています。
- XMLFile02.xml
<?xml version="1.0" encoding="utf-8" ?> <ListMessageInfo> <ListMessage> <MessageInfo> <Message>お前はバカか!</Message> <Condition>不機嫌</Condition> </MessageInfo> <MessageInfo> <Message>少しくらい優しくしてくれても良いじゃないか</Message> <Condition>寂しい</Condition> </MessageInfo> <MessageInfo> <Message>今日は元気だぞ</Message> <Condition>普通</Condition> </MessageInfo> </ListMessage> <Name>みやびー用</Name> </ListMessageInfo>
- SerializeDto.cs
public class ListMessageInfo { public MessageInfo[] ListMessage { get; set; } public string Name { get; set; } }
- Program.cs
XmlSerializer xs = new XmlSerializer(typeof(ListMessageInfo)); ListMessageInfo listInfo = xs.Deserialize(new FileStream(@"App_Data/XMLFile02.xml", FileMode.Open)) as ListMessageInfo; Console.WriteLine(listInfo.ListMessage[0].Message); Console.WriteLine(listInfo.Name); //お前はバカか! //みやびー用