XML 리터럴 개요(Visual Basic)

XML 리터럴을 사용하면 XML을 Visual Basic 코드에 직접 통합할 수 있습니다. XML 리터럴 구문은 LINQ to XML 개체를 나타내며 XML 1.0 구문과 유사합니다. 이렇게 하면 코드가 최종 XML과 동일한 구조를 가지므로 프로그래밍 방식으로 XML 요소와 문서를 더 쉽게 만들 수 있습니다.

Visual Basic은 XML 리터럴을 LINQ to XML 개체로 컴파일합니다. LINQ to XML은 XML을 만들고 조작하기 위한 간단한 개체 모델을 제공하며 이 모델은 LINQ(Language-Integrated Query)와 잘 통합됩니다. 자세한 내용은 XElement를 참조하세요.

XML 리터럴에 Visual Basic 식을 포함할 수 있습니다. 런타임 시 애플리케이션은 포함된 식의 값을 통합하여 각 리터럴에 대해 LINQ to XML 개체를 만듭니다. 이를 통해 XML 리터럴 내에 동적 콘텐츠를 지정할 수 있습니다. 자세한 내용은 XML에 포함된 식을 참조하세요.

XML 리터럴 구문과 XML 1.0 구문의 차이점에 대한 자세한 내용은 XML 리터럴 및 XML 1.0 사양을 참조하세요.

단순 리터럴

유효한 XML을 입력하거나 붙여넣어 Visual Basic 코드에서 LINQ to XML 개체를 만들 수 있습니다. XML 요소 리터럴은 XElement 개체를 반환합니다. 자세한 내용은 XML 요소 리터럴XML 리터럴 및 XML 1.0 사양을 참조하세요. 다음 예에서는 여러 자식 요소가 있는 XML 요소를 만듭니다.

Dim contact1 As XElement = 
    <contact>
      <name>Patrick Hines</name>
      <phone type="home">206-555-0144</phone>
      <phone type="work">425-555-0145</phone>
    </contact>

다음 예와 같이 <?xml version="1.0"?>으로 XML 리터럴을 시작하여 XML 문서를 만들 수 있습니다. XML 문서 리터럴은 XDocument 개체를 반환합니다. 자세한 내용은 XML 문서 리터럴을 참조하세요.

Dim contactDoc As XDocument = 
    <?xml version="1.0"?>
    <contact>
      <name>Patrick Hines</name>
      <phone type="home">206-555-0144</phone>
      <phone type="work">425-555-0145</phone>
    </contact>

참고 항목

Visual Basic의 XML 리터럴 구문은 XML 1.0 사양의 구문과 동일하지 않습니다. 자세한 내용은 XML 리터럴 및 XML 1.0 사양을 참조하세요.

줄 연속

XML 리터럴은 줄 연속 문자(공백 밑줄 입력 시퀀스)를 사용하지 않고 여러 줄에 걸쳐 있을 수 있습니다. 이렇게 하면 코드의 XML 리터럴을 XML 문서와 더 쉽게 비교할 수 있습니다.

컴파일러는 줄 연속 문자를 XML 리터럴의 일부로 처리합니다. 따라서 공백-밑줄-입력 시퀀스는 LINQ to XML 개체에 속하는 경우에만 사용해야 합니다.

그러나 포함된 식에 여러 줄 식이 있는 경우에는 줄 연속 문자가 필요합니다. 자세한 내용은 XML에 포함된 식을 참조하세요.

XML 리터럴에 쿼리 포함

포함된 식에서 쿼리를 사용할 수 있습니다. 이렇게 하면 쿼리에서 반환된 요소가 XML 요소에 추가됩니다. 이를 통해 사용자 쿼리 결과와 같은 동적 콘텐츠를 XML 리터럴에 추가할 수 있습니다.

예를 들어, 다음 코드는 포함된 쿼리를 사용하여 phoneNumbers2 배열의 멤버에서 XML 요소를 만든 다음 해당 요소를 contact2의 자식 요소로 추가합니다.

Public Class XmlSamples

  Public Sub Main()
    ' Initialize the objects. 

    Dim phoneNumbers2 As Phone() = { 
        New Phone("home", "206-555-0144"), 
        New Phone("work", "425-555-0145")}

    ' Convert the data contained in phoneNumbers2 to XML. 

    Dim contact2 = 
        <contact>
          <name>Patrick Hines</name>
          <%= From p In phoneNumbers2 
            Select <phone type=<%= p.Type %>><%= p.Number %></phone> 
          %>
        </contact>

    Console.WriteLine(contact2)
  End Sub

End Class

Class Phone
  Public Type As String
  Public Number As String
  Public Sub New(ByVal t As String, ByVal n As String)
    Type = t
    Number = n
  End Sub
End Class

컴파일러가 XML 리터럴에서 개체를 만드는 방법

Visual Basic 컴파일러는 XML 리터럴을 동등한 LINQ to XML 생성자에 대한 호출로 변환하여 LINQ to XML 개체를 빌드합니다. 예를 들어, Visual Basic 컴파일러는 다음 코드 예를 XML 버전 명령에 대한 XProcessingInstruction 생성자 호출, <contact>, <name><phone> 요소에 대한 XElement 생성자 호출 및 type 특성에 대한 XAttribute 생성자를 호출로 변환합니다. 특히 다음 샘플의 특성이 주어지면 Visual Basic 컴파일러는 XAttribute(XName, Object) 생성자를 두 번 호출합니다. 첫 번째는 name 매개 변수에 대해 type 값을 전달하고 value 매개 변수에 대해 home 값을 전달합니다. 두 번째는 또한 name 매개 변수에 대해 type 값을 전달하지만 value 매개 변수에 대해 값 work를 전달합니다.

Dim contactDoc As XDocument = 
    <?xml version="1.0"?>
    <contact>
      <name>Patrick Hines</name>
      <phone type="home">206-555-0144</phone>
      <phone type="work">425-555-0145</phone>
    </contact>

참고 항목