다음을 통해 공유


LINQ to XML 개요

XML은 다양한 컨텍스트에서 데이터의 형식을 지정하는 방법으로 널리 채택되고 있습니다. 예를 들어, 웹에 있는 구성 파일, Microsoft Office Word 파일 및 데이터베이스에서 XML을 찾을 수 있습니다.

LINQ to XML은 XML을 사용한 프로그래밍을 위해 다시 디자인된 최신 방법입니다. LINQ to XML은 DOM(문서 개체 모델)의 메모리 내 문서 수정 기능을 제공하며 .LINQ 쿼리 식을 지원합니다. 이러한 쿼리 식은 구문적으로 XPath와 다르지만 유사한 기능을 제공합니다.

LINQ to XML 개발자

LINQ to XML은 다양한 개발자를 대상으로 합니다. 특정 작업을 수행하려는 일반 개발자의 경우 LINQ to XML에서 SQL과 유사한 쿼리 경험을 제공하므로 XML을 더 쉽게 사용할 수 있습니다. 프로그래머는 약간의 시간만 투자해도 원하는 프로그래밍 언어로 간결하고 강력한 쿼리를 작성하는 방법을 배울 수 있습니다.

전문 개발자는 LINQ to XML을 사용하여 생산성을 크게 높일 수 있습니다. LINQ to XML을 통해 더욱 표현성이 크고 압축적이며 강력한 코드를 더 적게 작성할 수 있습니다. 이와 동시에 여러 데이터 도메인에서 쿼리 식을 사용할 수 있습니다.

LINQ to XML이란?

LINQ to XML은 LINQ를 사용할 수 있는 메모리 내 XML 프로그래밍 인터페이스로, .NET Framework 프로그래밍 언어에서 XML 작업을 수행할 수 있도록 합니다.

LINQ to XML은 XML 문서를 메모리로 가져온다는 점에서 DOM(문서 개체 모델)과 같습니다. 문서를 쿼리하고 수정할 수 있으며 문서를 수정한 후 파일에 저장하거나 serialize하고 네트워크를 통해 보낼 수 있습니다. 그러나 LINQ to XML은 DOM과 다릅니다. LINQ to XML은 간단하고 작업하기 쉬우며 Visual C# 2008의 언어 개선 기능을 활용하는 새로운 개체 모델을 제공합니다.

LINQ to XML의 가장 중요한 이점은 LINQ(통합 언어 쿼리)와 통합되었다는 점입니다. 이 통합을 통해 메모리 내 XML 문서에 대한 쿼리를 작성하여 요소와 특성의 컬렉션을 검색할 수 있습니다. LINQ to XML의 쿼리 기능은 기능 면에서(구문 면에서는 아니지만) XPath 및 XQuery와 유사합니다. Visual C# 2008에서는 LINQ의 통합을 통해 더욱 강력한 형식 지정, 컴파일 타임 검사 및 개선된 디버거 지원 기능을 제공합니다.

LINQ to XML의 또 다른 이점은 쿼리 결과를 XElementXAttribute 개체 생성자에 대한 매개 변수로 사용할 수 있다는 점입니다. 이러한 이점은 XML 트리를 만드는 강력한 방법의 기반이 됩니다. 개발자는 함수 생성이라는 이 방법을 사용하여 XML 트리의 모양을 쉽게 변환할 수 있습니다.

예를 들어, 샘플 XML 파일: 일반적인 구매 주문(LINQ to XML)에서 설명하는 것과 같은 일반적인 XML 구매 주문이 있을 수 있습니다. LINQ to XML을 사용하여 다음 쿼리를 실행하면 구매 주문의 모든 품목 요소에 대한 부품 번호 특성 값을 가져올 수 있습니다.

IEnumerable<string> partNos =
    from item in purchaseOrder.Descendants("Item")
    select (string) item.Attribute("PartNumber");

Visual Basic에서는 동일한 쿼리를 다음과 같이 작성할 수 있습니다.

Dim partNos = _
    From item In purchaseOrder...<Item> _
    Select item.@PartNumber

또 다른 예로, $100보다 큰 값을 가진 품목의 목록을 부품 번호 순서로 정렬하려고 할 수 있습니다. 이 정보를 얻으려면 다음 쿼리를 실행할 수 있습니다.

IEnumerable<XElement> partNos =
    from item in purchaseOrder.Descendants("Item")
    where (int) item.Element("Quantity") *
        (decimal) item.Element("USPrice") > 100
    orderby (string)item.Element("PartNumber")
    select item;

Visual Basic에서는 동일한 쿼리를 다음과 같이 작성할 수 있습니다.

Dim partNos = _
    From item In purchaseOrder...<Item> _
    Where (item.<Quantity>.Value * _
           item.<USPrice>.Value) > 100 _
    Order By item.<PartNumber>.Value _
    Select item

이러한 LINQ 기능 외에도 LINQ to XML에서는 향상된 XML 프로그래밍 인터페이스를 제공합니다. LINQ to XML을 사용하면 다음과 같은 작업을 수행할 수 있습니다.

  • 파일이나 스트림에서 XML을 로드합니다.

  • 파일이나 스트림에서 XML을 serialize합니다.

  • 함수 생성을 사용하여 XML을 새로 만듭니다.

  • XPath와 같은 축을 사용하여 XML을 쿼리합니다.

  • Add, Remove, ReplaceWithSetValue와 같은 메서드를 사용하여 메모리 내 XML 트리를 조작합니다.

  • XSD를 사용하여 XML 트리의 유효성을 검사합니다.

  • 이러한 기능을 함께 사용하여 XML 트리의 모양을 변환할 수 있습니다.

XML 트리 만들기

LINQ to XML을 사용하여 프로그래밍하는 경우의 가장 중요한 이점 중 하나는 XML 트리를 쉽게 만들 수 있다는 점입니다. 예를 들어, 작은 XML 트리를 만들려면 다음과 같이 C# 코드를 작성할 수 있습니다.

XElement contacts =
    new XElement("Contacts",
        new XElement("Contact",
            new XElement("Name", "Patrick Hines"),
            new XElement("Phone", "206-555-0144", 
                new XAttribute("Type", "Home")),
            new XElement("phone", "425-555-0145",
                new XAttribute("Type", "Work")),
            new XElement("Address",
                new XElement("Street1", "123 Main St"),
                new XElement("City", "Mercer Island"),
                new XElement("State", "WA"),
                new XElement("Postal", "68042")
            )
        )
    );

Visual Basic에서 XML 트리를 생성하는 코드는 XML 리터럴을 사용하기 때문에 훨씬 더 간단합니다.

Dim contacts = _
    <Contacts>
        <Contact>
            <Name>Patrick Hines</Name>
            <Phone Type="Home">206-555-0144</Phone>
            <Phone Type="Work">425-555-0145</Phone>
            <Address>
                <Street1>123 Main St</Street1>
                <City>Mercer Island</City>
                <State>WA</State>
                <Postal>68042</Postal>
            </Address>
        </Contact>
    </Contacts>

Visual Basic 컴파일러는 XML 리터럴을 LINQ to XML 메서드 호출로 변환합니다.

자세한 내용은 XML 트리 만들기를 참조하십시오.

참고 항목

참조

System.Xml.Linq

개념

Visual Basic의 LINQ to XML 개요

기타 리소스

시작(LINQ to XML)

Visual Basic의 XML