【C#】C#プログラミングのイディオム(11章)XMLの操作
前回のつづき
XMLやJSONでデータ連係をすることもあるので、 その流れかなと。11章はXMLで12章はJSON
プレーンテキストからXMLやJSONに変換し、他システムへ連係することがあるため イディオムに載っているのだろうと思われる章。
章の初めにはLINQ to XMLの話・・・と書いてありますが。 LINQ to Objectが理解できていれば、構文はほぼ同じなので、 そこまで苦労しないと思います。
XDocument のクエリと XElement のクエリ (C#) | Microsoft Docs
ファイルをloadするとき、XDocumentを利用するか、XElementを利用するかによって、 ルートを含んで全ての要素を取得するか否かが異なります。 そこには注意。
var xdoc = XDocument.Load(@"/Users/xxxxx/Downloads/CSharpPhraseBook/Chapter11/Section02/novelists.xml"); var xelements = xdoc.Root.Elements().OrderBy(x => (string)(x.Element("name").Attribute("kana"))); foreach (var xnovelist in xelements) { XElement xname = xnovelist.Element("name"); var birth = (DateTime)xnovelist.Element("birth"); Console.WriteLine("{0} {1}", xname.Value, birth.ToShortDateString()); } foreach (var xnovellist in xdoc.Root.Elements()) { var name = xnovellist.Element("name"); var works = xnovellist.Element("masterpieces") .Elements("title") .Select(x => x.Value); Console.WriteLine("{0} - {1}", name.Value, string.Join(",", works)); }
var filename = @"/Users/xxxx/Downloads/CSharpPhraseBookAnswer/Chap11/Exercise2/Sample.xml"; var xdoc = XDocument.Load(filename); /*xmlファイルを読み込みつつ、出力用のデータを作成。word要素に、属性kanji,yomiを設定したものをXElement属性で取得*/ var lists = xdoc.Root.Elements().Select(x => new XElement("word", new XAttribute("kanji", x.Element("kanji").Value), new XAttribute("yomi", x.Element("yomi").Value)) ); var root = new XElement("difficaltkanji", lists); Console.WriteLine(root); root.Save(@"/Users/xxxx/Downloads/CSharpPhraseBookAnswer/Chap11/Exercise2/attribute.xml");
今回は内容が少ないですが、これで終了。 文字列操作なので、実際に文章を作成し、加工するトレーニングが良いのではと思い、実践します。
つづく
実戦で役立つ C#プログラミングのイディオム/定石&パターン
posted with amazlet at 18.10.07