方法 : Descendants メソッドを使用して単一の子孫を検索する
更新 : November 2007
Descendants 軸メソッドを使用すると、一意の名前を持つ単一の要素を検索するコードを簡単に記述できます。この手法は、特定の名前を持つ特定の子孫を検索する必要がある場合に特に役立ちます。目的の要素に移動するコードを記述することもできますが、多くの場合、Descendants 軸を使用してコードを記述する方がより迅速で簡単です。
使用例
この例では、First 標準クエリ演算子を使用します。
XElement root = XElement.Parse(@"<Root>
<Child1>
<GrandChild1>GC1 Value</GrandChild1>
</Child1>
<Child2>
<GrandChild2>GC2 Value</GrandChild2>
</Child2>
<Child3>
<GrandChild3>GC3 Value</GrandChild3>
</Child3>
<Child4>
<GrandChild4>GC4 Value</GrandChild4>
</Child4>
</Root>");
string grandChild3 = (string)
(from el in root.Descendants("GrandChild3")
select el).First();
Console.WriteLine(grandChild3);
Dim root As XElement = _
<Root>
<Child1>
<GrandChild1>GC1 Value</GrandChild1>
</Child1>
<Child2>
<GrandChild2>GC2 Value</GrandChild2>
</Child2>
<Child3>
<GrandChild3>GC3 Value</GrandChild3>
</Child3>
<Child4>
<GrandChild4>GC4 Value</GrandChild4>
</Child4>
</Root>
Dim grandChild3 As String = _
(From el In root...<GrandChild3> _
Select el).First()
Console.WriteLine(grandChild3)
このコードを実行すると、次の出力が生成されます。
GC3 Value
次の例は名前空間に含まれている XML 用のクエリです。これらのクエリは上の例と同じ機能を表しています。詳細については、「XML 名前空間の使用」を参照してください。
XElement root = XElement.Parse(@"<aw:Root xmlns:aw='https://www.adventure-works.com'>
<aw:Child1>
<aw:GrandChild1>GC1 Value</aw:GrandChild1>
</aw:Child1>
<aw:Child2>
<aw:GrandChild2>GC2 Value</aw:GrandChild2>
</aw:Child2>
<aw:Child3>
<aw:GrandChild3>GC3 Value</aw:GrandChild3>
</aw:Child3>
<aw:Child4>
<aw:GrandChild4>GC4 Value</aw:GrandChild4>
</aw:Child4>
</aw:Root>");
XNamespace aw = "https://www.adventure-works.com";
string grandChild3 = (string)
(from el in root.Descendants(aw + "GrandChild3")
select el).First();
Console.WriteLine(grandChild3);
Imports <xmlns:aw='https://www.adventure-works.com'>
Module Module1
Sub Main()
Dim root As XElement = _
<aw:Root>
<aw:Child1>
<aw:GrandChild1>GC1 Value</aw:GrandChild1>
</aw:Child1>
<aw:Child2>
<aw:GrandChild2>GC2 Value</aw:GrandChild2>
</aw:Child2>
<aw:Child3>
<aw:GrandChild3>GC3 Value</aw:GrandChild3>
</aw:Child3>
<aw:Child4>
<aw:GrandChild4>GC4 Value</aw:GrandChild4>
</aw:Child4>
</aw:Root>
Dim grandChild3 As String = _
(From el In root...<aw:GrandChild3> _
Select el).First()
Console.WriteLine(grandChild3)
End Sub
End Module
このコードを実行すると、次の出力が生成されます。
GC3 Value