.NET

これ、解決法はいくらでもあるわよね。そのひとつを考えてみましょう。

たとえば、とあるツールでアクセス先の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>

トップ   編集 凍結解除 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2016-06-03 (金) 12:03:28