XMLの取り扱い

XMLの扱いにいつまでたっても慣れないので、メモを残していきます。




XMLファイルをオブジェクトに読み込む手順

シリアライズとかは面倒そうなのでスルーして、XDocumentを使う方法。あとはツリー構造をたどってXElementオブジェクトを見ていく。

            using System.Xml;

            XmlDocument doc = new XmlDocument();
            doc.Load("../../XMLFile1.xml");


XML文字列をオブジェクトに読み込む手順


XMLデータがファイルではなくて、文字列になっている場合は、LoadXMLメソッドを使う。

            string xml = @"(ここにXMLのテキスト)";
            XmlDocument doc.LoadXml(xml);

シリアライズをするときに感じる面倒くささがまったくなくて、実に気持ちよくXMLを読み込める。XmlElementは素敵。

XMLに1対1に対応したクラスを作る手順

XmlElementがあれば要らないような気がするけど、今回調べてわかったのでメモしておきます。

VisualStudio2013には便利な機能があって、XMLをコピーするだけでクラスを作ってくれます。

まずXMLファイルを開いて全選択してコピーします。その後、クラスファイルを開いて、VisualStudioの編集メニューから「形式を選択して貼り付け」→「XMLをクラスとして貼り付ける」を選ぶと、クラスのできあがり。

自動で作られるクラスはちょっと古めかしい感じだけど(プロパティに { get; set } を使ってないとか)、自動で作ってくれるのはありがたい。

XMLファイルを1対1のクラスオブジェクトに読み込む手順

デシリアライズですか。読み込みがうまくけば、あとはプロパティを見ていくだけでよいので便利といえば便利。しかし、XMLファイルの形式が少しでも変わったらエラーになるのだろうし、便利と引き換えにいろいろデメリットもあるわけだ。

            XmlSerializer serializer = new XmlSerializer(typeof(GET_STATS_LIST));

            XmlReader reader = XmlReader.Create("../../XMLFile1.xml");

            GET_STATS_LIST obj = (GET_STATS_LIST)serializer.Deserialize(reader);

            System.Diagnostics.Debug.WriteLine("count= "+ obj.DATALIST_INF.NUMBER.ToString());

続く

コメント

このブログの人気の投稿

varchar をデータ型 numeric に変換中に、算術オーバーフロー エラーが発生しました。