Visual Basic의 XML 리터럴(LINQ to XML)
이 문서에서는 XML 리터럴과 포함된 식을 사용하여 Visual Basic에서 XML 트리를 만드는 방법에 대한 정보를 제공합니다.
예: XML 리터럴을 사용하여 XML 트리 만들기
다음 예에서는 XML 리터럴을 사용하여 XElement(이 경우에는 contacts
)을 만드는 방법을 보여 줍니다.
Dim contacts As XElement = _
<Contacts>
<Contact>
<Name>Patrick Hines</Name>
<Phone>206-555-0144</Phone>
<Address>
<Street1>123 Main St</Street1>
<City>Mercer Island</City>
<State>WA</State>
<Postal>68042</Postal>
</Address>
</Contact>
</Contacts>
예: XML 리터럴을 사용하여 간단한 콘텐츠로 XElement 만들기
다음과 같이 단순 내용이 포함된 XElement를 만들 수 있습니다.
Dim n as XElement = <Customer>Adventure Works</Customer>
Console.WriteLine(n)
이 예제는 다음과 같은 출력을 생성합니다.
<Customer>Adventure Works</Customer>
예: XML 리터럴을 사용하여 빈 요소 만들기
다음과 같이 빈 XElement를 만들 수 있습니다.
Dim n As XElement = <Customer/>
Console.WriteLine(n)
이 예제는 다음과 같은 출력을 생성합니다.
<Customer />
포함된 식을 사용하여 콘텐츠 만들기
XML 리터럴의 중요한 특징은 포함 식을 허용한다는 점입니다. 포함 식을 통해 식을 계산하고 식의 결과를 XML 트리에 삽입할 수 있습니다. 식이 XElement 형식으로 계산되면 요소가 트리에 삽입되고, 식이 XAttribute 형식으로 계산되면 특성이 트리에 삽입됩니다. 유효한 경우에만 요소와 특성을 트리에 삽입할 수 있습니다.
단일 식만 포함 식에 들어갈 수 있는 점을 명심해야 합니다. 여러 문을 포함할 수 없습니다. 식이 한 줄을 넘으면 줄 연속 문자를 사용해야 합니다.
포함 식을 사용하여 기존 노드(요소 포함)와 특성을 새 XML 트리에 추가하는 경우 기존 노드에 이미 부모가 있으면 노드가 복제됩니다. 새로 복제된 노드는 새 XML 트리에 추가됩니다. 기존 노드에 부모가 없으면 노드가 새 XML 트리에 추가되기만 합니다. 이 문서의 마지막 예에서는 이를 보여 줍니다.
예: 포함된 식을 사용하여 요소 포함
다음 예제에서는 포함 식을 사용하여 요소를 트리에 삽입합니다.
xmlTree1 As XElement = _
<Root>
<Child>Contents</Child>
</Root>
Dim xmlTree2 As XElement = _
<Root>
<%= xmlTree1.<Child> %>
</Root>
Console.WriteLine(xmlTree2)
이 예제는 다음과 같은 출력을 생성합니다.
<Root>
<Child>Contents</Child>
</Root>
예: 콘텐츠에 포함된 식 사용
포함 식을 사용하여 요소의 내용을 제공할 수 있습니다.
Dim str As String
str = "Some content"
Dim root As XElement = <Root><%= str %></Root>
Console.WriteLine(root)
이 예제는 다음과 같은 출력을 생성합니다.
<Root>Some content</Root>
예: 포함된 식에서 LINQ 쿼리 사용
LINQ 쿼리 결과를 사용하여 요소의 콘텐츠를 제공할 수 있습니다.
Dim arr As Integer() = {1, 2, 3}
Dim n As XElement = _
<Root>
<%= From i In arr Select <Child><%= i %></Child> %>
</Root>
Console.WriteLine(n)
이 예제는 다음과 같은 출력을 생성합니다.
<Root>
<Child>1</Child>
<Child>2</Child>
<Child>3</Child>
</Root>
예: 포함된 식을 사용하여 노드 이름 제공
또한 포함된 식을 사용하여 특성 이름, 특성 값, 요소 이름 및 요소 값을 계산할 수도 있습니다.
Dim eleName As String = "ele"
Dim attName As String = "att"
Dim attValue As String = "aValue"
Dim eleValue As String = "eValue"
Dim n As XElement = _
<Root <%= attName %>=<%= attValue %>>
<<%= eleName %>>
<%= eleValue %>
</>
</Root>
Console.WriteLine(n)
이 예제는 다음과 같은 출력을 생성합니다.
<Root att="aValue">
<ele>eValue</ele>
</Root>
예: 포함된 식을 사용하여 노드 복제 및 연결
앞서 언급했듯이 포함된 식을 사용하여 기존 노드(요소 포함)와 특성을 새 XML 트리에 추가하고 추가되는 노드가 이미 부모 노드인 경우 노드가 복제되고 복제본이 새 XML 트리에 연결됩니다. 기존 노드가 부모 노드가 아닌 경우 새 XML 트리에 연결됩니다.
다음 코드에서는 부모가 있는 요소를 트리에 추가할 때의 동작과 부모가 없는 요소를 트리에 추가할 때의 동작을 보여 줍니다.
' Create a tree with a child element.
Dim xmlTree1 As XElement = _
<Root>
<Child1>1</Child1>
</Root>
' Create an element that's not parented.
Dim child2 As XElement = <Child2>2</Child2>
' Create a tree and add Child1 and Child2 to it.
Dim xmlTree2 As XElement = _
<Root>
<%= xmlTree1.<Child1>(0) %>
<%= child2 %>
</Root>
' Compare Child1 identity.
Console.WriteLine("Child1 was {0}", _
IIf(xmlTree1.Element("Child1") Is xmlTree2.Element("Child1"), _
"attached", "cloned"))
' Compare Child2 identity.
Console.WriteLine("Child2 was {0}", _
IIf(child2 Is xmlTree2.Element("Child2"), _
"attached", "cloned"))
이 예제는 다음과 같은 출력을 생성합니다.
Child1 was cloned
Child2 was attached
참고 항목
.NET