함수 생성(LINQ to XML)
LINQ to XML은 함수 생성이라는 XML 요소를 만드는 강력한 방법을 제공합니다. 함수 생성을 사용하면 단일 문으로 XML 트리를 만들 수 있습니다.
LINQ to XML 프로그래밍 인터페이스의 몇 가지 주요 기능은 함수 생성에 사용됩니다.
- XElement 생성자는 내용에 대한 다양한 형식의 인수를 사용합니다. 예를 들어, 자식 요소가 되는 다른 XElement 개체를 전달할 수 있으며 요소의 특성이 되는 XAttribute 개체를 전달할 수 있습니다. 또는 문자열로 변환되고 요소의 텍스트 내용이 되는 다른 모든 형식의 개체를 전달할 수 있습니다.
- XElement 생성자는
params
형식의 Object 배열을 사용하므로 생성자에 개수에 관계없이 개체를 전달할 수 있습니다. 따라서 복잡한 내용을 가진 요소를 만들 수 있습니다. - 개체가 IEnumerable<T>을 구현하는 경우 개체의 컬렉션이 열거되고 컬렉션의 모든 항목이 추가됩니다. 컬렉션에 XElement 또는 XAttribute 개체가 포함되어 있으면 컬렉션의 각 항목이 개별적으로 추가됩니다. 이것은 LINQ 쿼리의 결과를 생성자에 전달할 수 있도록 하기 때문에 중요합니다.
예: XML 트리 만들기
함수 생성을 사용하여 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")
)
)
);
예: LINQ 쿼리 결과를 사용하여 XML 트리 만들기
또한 이러한 기능을 사용하면 다음 예와 같이 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>
참고 항목
GitHub에서 Microsoft와 공동 작업
이 콘텐츠의 원본은 GitHub에서 찾을 수 있으며, 여기서 문제와 끌어오기 요청을 만들고 검토할 수도 있습니다. 자세한 내용은 참여자 가이드를 참조하세요.
.NET