次の方法で共有


方法 : 要素名をフィルター処理する (LINQ to XML)

XElementIEnumerable<T> を返すメソッドのいずれかを呼び出す際に、要素名をフィルター処理できます。

使用例

この例では、指定した名前を持つ子孫だけが含まれるようにフィルター処理された子孫のコレクションを取得します。

この例では、「サンプル XML ファイル : 一般的な購買発注書 (LINQ to XML)」の XML ドキュメントを使用しています。

XElement po = XElement.Load("PurchaseOrder.xml");
IEnumerable<XElement> items =
    from el in po.Descendants("ProductName")
    select el;
foreach(XElement prdName in items)
    Console.WriteLine(prdName.Name + ":" + (string) prdName);
Dim po As XElement = XElement.Load("PurchaseOrder.xml")
Dim items As IEnumerable(Of XElement) = _
    From el In po...<ProductName> _
    Select el
For Each prdName As XElement In items
    Console.WriteLine(prdName.Name.ToString & ":" & prdName.Value)
Next

このコードを実行すると、次の出力が生成されます。

ProductName:Lawnmower
ProductName:Baby Monitor

XElement コレクションの IEnumerable<T> を返す他のメソッドは、同じパターンに従います。 そのシグネチャは、Elements および Descendants と似ています。 類似するシグネチャを持つメソッドの一覧を次に示します。

次の例は名前空間に含まれている XML 用のクエリです。これらのクエリは上の例と同じ機能を表しています。 詳細については、「XML 名前空間の使用」を参照してください。

この例では、「サンプル XML ファイル : 名前空間内の一般的な購買発注書」の XML ドキュメントを使用しています。

XNamespace aw = "https://www.adventure-works.com";
XElement po = XElement.Load("PurchaseOrderInNamespace.xml");
IEnumerable<XElement> items =
    from el in po.Descendants(aw + "ProductName")
    select el;
foreach (XElement prdName in items)
    Console.WriteLine(prdName.Name + ":" + (string)prdName);
Imports <xmlns:aw="https://www.adventure-works.com">

Module Module1
    Sub Main()
        Dim po As XElement = XElement.Load("PurchaseOrderInNamespace.xml")
        Dim items As IEnumerable(Of XElement) = _
            From el In po...<aw:ProductName> _
            Select el
        For Each prdName As XElement In items
            Console.WriteLine(prdName.Name.ToString & ":" & prdName.Value)
        Next
    End Sub
End Module

このコードによって、次の出力が生成されます。

{https://www.adventure-works.com}ProductName:Lawnmower
{https://www.adventure-works.com}ProductName:Baby Monitor

参照

概念

LINQ to XML 軸