これ、解決法はいくらでもあるわよね。そのひとつを考えてみましょう。
たとえば、とあるツールでアクセス先のURLを保管したいとするわよね。次回起動時には続きからできると。
まず、サイトオブジェクトをこうするの。
class Site { public string title; public string url; }
サイトにアクセスするたびにこのデータを配列にして蓄積するわけよね。
で、保存はこんな感じかな?
static XmlDocument getXml(List<Site> s){ XmlDocument document = new XmlDocument(); XmlDeclaration declaration = document.CreateXmlDeclaration("1.0", "UTF-8", null); // XML宣言 XmlElement root = document.CreateElement("Setup"); // ルート要素 document.AppendChild(declaration); document.AppendChild(root); foreach (Site d in s) { XmlElement element = document.CreateElement("item"); element.InnerText = d.url; // 要素の内容 element.SetAttribute("title", d.title); // 属性 Console.WriteLine("{0}:{1}", d.title, d.url); root.AppendChild(element); } return (document); } /// <summary> /// サイト名とURLを、Siteオブジェクトにして返す。 /// </summary> /// <param name="title"></param> /// <param name="url"></param> /// <returns>Site</returns> static Site getSite(string title, string url) { Site r = new Site(); r.title = title; r.url = url; return (r); }
上記を以下のようにして使うわけ。
まず、データ追記はこんな感じ。
List<Site> s = new List<Site>(); s.Add(getSite("Google","http://www.google.co.jp/")); s.Add(getSite("Yahoo!Japan","http://www.yahoo.co.jp/"));
そんで、XML変換はこんな感じ。
XmlDocument document = getXml(s);
すると、保存はこうなるわね。
// ファイルに保存する document.Save("../sample.xml");
逆に読みだすにはこうするの。
// ファイルから読みだす。 XmlDocument doc2 = new XmlDocument(); doc2.Load("../sample.xml"); foreach (XmlElement element in doc2.DocumentElement) { string text = element.InnerText; // 要素の内容 string attribute = element.GetAttribute("title"); // 属性 Console.WriteLine("Loaded:{0} : {1}", attribute, text); } // Console.WriteLine("何か押せば終わりです。"); Console.ReadLine(); // last
うん。
ちなみに読み書きした sample.xml は、以下のようになるわ。
<?xml version="1.0" encoding="UTF-8"?> <Setup> <item title="Google">http://www.google.co.jp/</item> <item title="Yahoo!Japan">http://www.yahoo.co.jp/</item> </Setup>