LINQ to XMLでのナビゲーション系のプロパティについて.
過去の内容は以下から見れます。よろしければご参照くださいませ。
今回のPreviousNodeとNextNodeはどちらもナビゲーションに関連するプロパティです。
どちらもXNodeに所属するプロパティです。
PreviousNodeは、現在の要素の一つ前の兄弟要素を取得します。
NextNodeは、一つ後の兄弟要素を取得します。
兄弟要素というのは、自分と同じ階層位置に存在するノードの事です。
どちらのメソッドも、該当要素が存在しない場合はnullが返却されます。
以下、サンプルです。
namespace Gsf.Samples { using System; using System.Collections.Generic; using System.Linq; using System.Xml.Linq; #region LinqSamples-73 /// <summary> /// LINQ to XMLのサンプルです. /// </summary> /// <remarks> /// ナビゲーション(PreviousNode, NextNodeプロパティ)のサンプルです. /// </remarks> public class LinqSamples73 : IExecutable { public void Execute() { // // PreviousNode // 現在の要素の一つ前の兄弟要素を取得する // 一つ前の要素が存在しない場合は、nullとなる。 // var root = BuildSampleXml(); var elem = root.Elements("Child").Where(x => x.Value == "value2").First(); Console.WriteLine("Prev node = {0}", elem.PreviousNode); elem = root.Elements("Child").First(); Console.WriteLine("Prev node = {0}", elem.PreviousNode == null); // // NextNode // 現在の要素の一つ後の兄弟要素を取得する // 一つ後の要素が存在しない場合は、nullとなる // root = BuildSampleXml(); elem = root.Elements("Child").Where(x => x.Value == "value3").First(); Console.WriteLine("Next node = {0}", elem.NextNode); elem = root.Elements("Child").Last(); Console.WriteLine("Next node = {0}", elem.NextNode == null); } XElement BuildSampleXml() { var root = new XElement("Root", new XElement("Child", "value1"), new XElement("Child", "value2"), new XElement("Child", "value3"), new XElement("Child", "value4") ); return root; } } #endregion }
実行すると以下のようになります。
Prev node =value1 Prev node = True Next node =value4 Next node = True
以下、参考リソースです.
- XNode.PreviousNode プロパティ
- XNode.NextNode プロパティ
================================
過去の記事については、以下のページからご参照下さい。
- いろいろ備忘録日記まとめ
サンプルコードは、以下の場所で公開しています。
- いろいろ備忘録日記サンプルソース置き場