過去の内容は以下から見れます。よろしければご参照くださいませ。
今回は、アノテーションについて.
アノテーションとは、そのままの意味通り「注釈」という意味です。
LINQ to XMLでは、それぞれのデータに対してアノテーションを付与することができます。
アノテーションに関するメソッドは、XObjectクラスに所属しています。
付与したアノテーションは、LINQ to XMLで処理している間のみ有効なデータです。
永続化されず、ToStringにも表示されません。
WinFormsとかのTagプロパティみたいな感じでちょっとしたデータを入れておく事ができます。
以下、サンプルです。
namespace Gsf.Samples { using System; using System.Collections.Generic; using System.Linq; using System.Xml.Linq; #region LinqSamples-86 /// <summary> /// LINQ to XMLのサンプルです. /// </summary> /// <remarks> /// LINQ to XMLのアノテーション機能についてのサンプルです。 /// </remarks> public class LinqSamples86 : IExecutable { public void Execute() { // LINQ to XMLでは、それぞれのデータに対して // アノテーションを付与することが出来る。 // // XObject.AddAnnotation // XObject.Annotation(Type) // .Annotation<T>() // .Annotations(Type) // .Annotations<T>() // XObject.RemoveAnnotations(Type) // .RemoveAnnotations<T>() // // アノテーションは、LINQ to XMLで処理している間のみ有効なデータ. // 永続化されず、ToStringにも表示されない // Tagプロパティのような使い方が出来る. // // コレクションを扱うAnnotationsメソッドのコードは割愛 // var root = BuildSampleXml(); var elem = root.Descendants("Price").Last(); // // アノテーションを追加. // elem.AddAnnotation(new Tag("Tag Value")); // // アノテーションが付いている要素を列挙してみる. // foreach (var item in QueryHasAnnotation(root)) { Console.WriteLine(item); Console.WriteLine(item.Annotation<Tag>().Value); } // // アノテーションを削除 // elem.RemoveAnnotations<Tag>(); Console.WriteLine(QueryHasAnnotation(root).Count()); // // アノテーションを付与した状態でToStringしてみる // elem.AddAnnotation(new Tag("Tag Value")); Console.WriteLine(root); } IEnumerable<XElement> QueryHasAnnotation(XElement root) { var query = from el in root.Descendants() let an = el.Annotation<Tag>() where an != null select el; return query; } XElement BuildSampleXml() { // // サンプルXMLファイル // see: http://msdn.microsoft.com/ja-jp/library/vstudio/ms256479(v=vs.90).aspx // return XElement.Load(@"xml/Books.xml"); } class Tag { public Tag(string value) { Value = value; } public string Value { get; private set; } } } #endregion }
実行すると以下のようになります。
5.95 Tag Value 0Garghentini, Davide XML Developer's Guide Computer 44.95 2000-10-01 An in-depth look at creating applications with XML. Garcia, Debra Midnight Rain Fantasy 5.95 2000-12-16 A former architect battles corporate zombies, an evil sorceress, and her own childhood to become queen of the world.
以下、参照リソースです。
- XObject.AddAnnotation メソッド
- XObject.Annotations
メソッド - XObject.RemoveAnnotations
メソッド
================================
過去の記事については、以下のページからご参照下さい。
- いろいろ備忘録日記まとめ
サンプルコードは、以下の場所で公開しています。
- いろいろ備忘録日記サンプルソース置き場