방법: 요소 이름을 기준으로 필터링(LINQ to XML)
업데이트: November 2007
XElement의 IEnumerable<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>을 반환하는 다른 메서드는 같은 패턴을 따릅니다. 이들 메서드 시그니처는 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