次に示す一連のトピックでは、さまざまな XPath 式、およびそれらに関連する LINQ to XML の式について説明します。
拡張メソッドによって System.Xml.XPath.Extensions で使用可能になる LINQ to XML の XPath 機能をすべての例で使用します。 各例では、XPath 式と LINQ to XML 式の両方を実行します。 次に、両方のクエリの結果を比較して、XPath 式と LINQ to XML クエリが機能的に等価であることを検証します。 両方の種類のクエリは同じ XML ツリーからノードを返すため、クエリ結果は参照 ID を使用して比較されます。
このセクションの内容
トピック |
内容 |
---|---|
XPath と LINQ to XML の類似点および相違点についての概要を説明します。 |
|
XPath の子要素軸と LINQ to XML の Element メソッドを比較します。 関連する XPath 式は "DeliveryNotes" です。 |
|
XPath の子要素軸と LINQ to XML の Elements 軸を比較します。 関連する XPath 式は "./*" です。 |
|
ルート要素を取得する方法を、XPath と LINQ to XML の間で比較します。 関連する XPath 式は "/PurchaseOrders" です。 |
|
特定の名前を持つ子孫要素を取得する方法を、XPath と LINQ to XML の間で比較します。 関連する XPath 式は "//Name" です。 |
|
指定した名前を持ち、かつ指定した値の属性を持つ子孫要素を取得する方法を、XPath と LINQ to XML の間で比較します。 関連する XPath 式は ".//Address[@Type='Shipping']" です。 |
|
別の要素の値によって参照される属性に基づいて要素を取得する方法を、XPath と LINQ to XML の間で比較します。 関連する XPath 式は ".//Customer[@CustomerID=/Root/Orders/Order[12]/CustomerID]" です。 |
|
XML 名前空間の操作について、XPath の XmlNamespaceManager クラスを使用する方法と、LINQ to XML の XName クラスの Namespace プロパティを使用する方法を比較します。 関連する XPath 式は "./aw:*" です。 |
|
XPath の preceding-sibling 軸と LINQ to XML の子 XNode.ElementsBeforeSelf 軸を比較します。 関連する XPath 式は "preceding-sibling::*" です。 |
|
特定の名前を持つ子要素の子孫要素を取得する方法を、XPath と LINQ to XML の間で比較します。 関連する XPath 式は "./Paragraph//Text/text()" です。 |
|
XPath の UNION 演算子 | と LINQ to XML の Concat<TSource> 標準クエリ演算子を比較します。 関連する XPath 式は "//Category|//Price" です。 |
|
特定の名前を持つノードのすべての兄弟を検索する方法を、XPath と LINQ to XML の間で比較します。 関連する XPath 式は "../Book" です。 |
|
親要素に移動してその属性を検索する方法を、XPath と LINQ to XML の間で比較します。 関連する XPath 式は "../@id" です。 |
|
コンテキスト ノードの兄弟に関する特定の属性を検索する方法を、XPath と LINQ to XML の間で比較します。 関連する XPath 式は "../Book/@id" です。 |
|
特定の属性を持つすべての要素を検索する方法を、XPath と LINQ to XML の間で比較します。 関連する XPath 式は "./*[@Select]" です。 |
|
相対的位置に基づいて要素を検索する方法を、XPath と LINQ to XML の間で比較します。 関連する XPath 式は "Test[position() >= 2 and position() <= 4]" です。 |
|
ノードの直前の兄弟を検索する方法を、XPath と LINQ to XML の間で比較します。 関連する XPath 式は "preceding-sibling::*[1]" です。 |