LINQ to XMLでの属性の取得について.
過去の内容は以下から見れます。よろしければご参照くださいませ。
XElementには、属性の取得を行うためのメソッドがいくつか存在します。
FirstAttribute { get; } LastAttribute { get; } Attribute(XName) Attributes() Attributes(XName)
元定義は以下のようになっています。
XElement.FirstAttribute { get; } XElement.LastAttribute { get; } XElement.Attribute(XName) XElement.Attributes() XElement.Attributes(XName)
特に注意が必要なメソッドはありません。
名前の通りの動きをしてくれます。
以下、サンプルです。
#region LinqSamples-64 /// <summary> /// LINQ to XMLのサンプルです. /// </summary> /// <remarks> /// 属性取得系メソッドのサンプルです. /// </remarks> public class LinqSamples64 : IExecutable { public void Execute() { // // FirstAttribute // 現在の要素の最初の属性を取得する. // var root = BuildSampleXml(); var elem = root.Elements("Child").First(); var attr = elem.FirstAttribute; Console.WriteLine(attr); Console.WriteLine("{0}=\"{1}\"", attr.Name, attr.Value); Console.WriteLine("====================================="); // // LastAttribute // 現在の要素の最後の属性を取得する. // root = BuildSampleXml(); elem = root.Elements("Child").First(); attr = elem.LastAttribute; Console.WriteLine(attr); Console.WriteLine("====================================="); // // Attribute(XName) // 指定した名称を持つ属性を取得する. // root = BuildSampleXml(); elem = root.Elements("Child").First(); attr = elem.Attribute("Id2"); Console.WriteLine(attr); Console.WriteLine(elem.Attribute("Id3") == null); Console.WriteLine("====================================="); // // Attributes() // 要素が持つ属性をすべて取得する. // root = BuildSampleXml(); elem = root.Elements("Child").First(); var attrs = elem.Attributes(); Console.WriteLine("Count={0}", attrs.Count()); foreach (var a in attrs) { Console.WriteLine("\t{0}", a); } Console.WriteLine("====================================="); // // Attributes(XName) // 指定した名称に一致する属性を取得する. // 主にXElementのシーケンスに対して利用する. // root = BuildSampleXml(); var elems = root.Descendants(); attrs = elems.Attributes("Id"); Console.WriteLine("Count={0}", attrs.Count()); foreach (var a in attrs) { Console.WriteLine("\t{0}", a); } Console.WriteLine("====================================="); } XElement BuildSampleXml() { return XElement.Parse("<Root><Child Id=\"100\" Id2=\"200\"><Value Id=\"300\">hoge</Value></Child></Root>"); } } #endregion
実行すると以下のようになります。
Id="100" Id="100" ===================================== Id2="200" ===================================== Id2="200" True ===================================== Count=2 Id="100" Id2="200" ===================================== Count=2 Id="100" Id="300" =====================================
以下、参考リソースです.
- XElement.FirstAttribute プロパティ
- XElement.LastAttribute プロパティ
- XElement.Attribute メソッド
- XElement.Attributes メソッド
- XElement.Attributes メソッド (XName)
================================
過去の記事については、以下のページからご参照下さい。
- いろいろ備忘録日記まとめ
サンプルコードは、以下の場所で公開しています。
- いろいろ備忘録日記サンプルソース置き場