다음을 통해 공유


방법: 요소 이름을 기준으로 필터링(LINQ to XML)

XElementIEnumerable<T>을 반환하는 메서드 중 하나를 호출하면 요소 이름을 기준으로 필터링할 수 있습니다.

예제

이 예제에서는 하위 요소의 컬렉션을 검색합니다. 하위 항목이 필터링되므로 컬렉션에는 지정된 이름을 가진 하위 항목만 포함됩니다.

이 예제에서는 XML 문서로 샘플 XML 파일: 일반적인 구매 주문(LINQ to 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>을 반환하는 다른 메서드는 같은 패턴을 따릅니다. 이들 메서드 시그니처는 ElementsDescendants와 비슷합니다. 다음은 메서드 시그니처가 유사한 메서드의 전체 목록입니다.

다음 예제에서는 네임스페이스에 있는 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 축