다음을 통해 공유


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 리터럴을 <?xml version="1.0"?>시작하여 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 생성자 호출, XElement, <contact>, <name> 요소에 대한 <phone> 생성자 호출, XAttribute 특성에 대한 type 생성자 호출로 변환합니다. 특히 다음 샘플의 특성을 고려할 때 Visual Basic 컴파일러는 생성자를 두 번 호출 XAttribute(XName, Object) 합니다. 첫 번째는 type 매개 변수에 대한 값 namehome 매개 변수에 대한 값 value를 전달합니다. 두 번째는 type 매개 변수에 대해 값 name을, work 매개 변수에 대해서는 값 value를 전달할 것입니다.

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>

참고하십시오