함수 생성(LINQ to XML)

업데이트: November 2007

LINQ to XML에서는 함수 생성(functional construction)이라는 XML 요소를 만드는 강력한 방법을 제공합니다. 함수 생성은 단일 문으로 XML 트리를 만드는 기능입니다.

함수 생성을 가능하게 하는 LINQ to XML 프로그래밍 인터페이스의 몇 가지 주요 기능은 다음과 같습니다.

  • XElement 생성자는 내용에 대한 다양한 형식의 인수를 사용합니다. 예를 들어, 자식 요소가 되는 다른 XElement 개체를 전달할 수 있으며 요소의 특성이 되는 XAttribute 개체를 전달할 수 있습니다. 또는 문자열로 변환되고 요소의 텍스트 내용이 되는 다른 모든 형식의 개체를 전달할 수 있습니다.

  • XElement 생성자는 Object 형식의 params 배열을 사용하므로 생성자에 개수에 관계없이 개체를 전달할 수 있습니다. 따라서 복잡한 내용을 가진 요소를 만들 수 있습니다.

  • 개체가 IEnumerable<T>을 구현하는 경우 개체의 컬렉션이 열거되고 컬렉션의 모든 항목이 추가됩니다. 컬렉션에 XElement 또는 XAttribute 개체가 포함되어 있으면 컬렉션의 각 항목이 별도로 추가됩니다. 이것은 LINQ 쿼리의 결과를 생성자에 전달할 수 있도록 하기 때문에 중요합니다.

이러한 기능을 사용하여 XML 트리를 만드는 코드를 작성할 수 있습니다. 예제는 다음과 같습니다.

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

또한 이러한 기능을 사용하여 XML 트리를 만들 때 LINQ 쿼리의 결과를 사용하는 코드를 다음과 같이 작성할 수도 있습니다.

XElement srcTree = new XElement("Root",
    new XElement("Element", 1),
    new XElement("Element", 2),
    new XElement("Element", 3),
    new XElement("Element", 4),
    new XElement("Element", 5)
);
XElement xmlTree = new XElement("Root",
    new XElement("Child", 1),
    new XElement("Child", 2),
    from el in srcTree.Elements()
    where (int)el > 2
    select el
);
Console.WriteLine(xmlTree);

Visual Basic에서는 XML 리터럴을 통해 동일한 작업을 수행할 수 있습니다.

Dim srcTree As XElement = _
    <Root>
        <Element>1</Element>
        <Element>2</Element>
        <Element>3</Element>
        <Element>4</Element>
        <Element>5</Element>
    </Root>
Dim xmlTree As XElement = _
    <Root>
        <Child>1</Child>
        <Child>2</Child>
        <%= From el In srcTree.Elements() _
            Where CInt(el) > 2 _
            Select el %>
    </Root>
Console.WriteLine(xmlTree)

이 예제의 결과는 다음과 같습니다.

<Root>
  <Child>1</Child>
  <Child>2</Child>
  <Element>3</Element>
  <Element>4</Element>
  <Element>5</Element>
</Root>

참고 항목

개념

XML 트리 만들기