다음을 통해 공유


XML 요소 리터럴(Visual Basic)

개체를 나타내는 리터럴입니다 XElement .

문법

<name [ attributeList ] />
-or-
<name [ attributeList ] > [ elementContents ] </[ name ]>

부분

  • <

    필수 사항입니다. 시작 요소 태그를 엽니다.

  • name

    필수 사항입니다. 요소의 이름입니다. 형식은 다음 중 하나입니다.

    • 양식 [ePrefix:]eName의 요소 이름에 대한 리터럴 텍스트는 다음과 같습니다.

      부분 설명
      ePrefix 선택 사항입니다. 요소의 XML 네임스페이스 접두사입니다. 파일 또는 프로젝트 수준에서 문으로 Imports 정의된 전역 XML 네임스페이스 또는 이 요소 또는 부모 요소에 정의된 로컬 XML 네임스페이스여야 합니다.
      eName 필수 사항입니다. 요소의 이름입니다. 형식은 다음 중 하나입니다.

      - 리터럴 텍스트입니다. 선언된 XML 요소 및 특성의 이름을 참조하세요.
      - 폼 <%= eNameExp %>의 포함된 식입니다. 형식 eNameExp 은 암시적으로 변환할 수 XName있는 형식이어야 합니다String.
    • <%= nameExp %>의 포함된 식입니다. 형식 nameExp 은 암시적으로 변환할 StringXName있는 형식이어야 합니다. 포함된 식은 요소의 닫는 태그에서 허용되지 않습니다.

  • attributeList

    선택 사항입니다. 리터럴에 선언된 특성 목록입니다.

    attribute [ attribute ... ]

    각각 attribute 에는 다음 구문 중 하나가 있습니다.

    • 특성 할당, 양식 [aPrefix:]aName=aValue의 위치:

      부분 설명
      aPrefix 선택 사항입니다. 특성의 XML 네임스페이스 접두사입니다. 문으로 정의된 Imports 전역 XML 네임스페이스 또는 이 요소 또는 부모 요소에 정의된 로컬 XML 네임스페이스여야 합니다.
      aName 필수 사항입니다. 특성의 이름입니다. 형식은 다음 중 하나입니다.

      - 리터럴 텍스트입니다. 선언된 XML 요소 및 특성의 이름을 참조하세요.
      - 폼 <%= aNameExp %>의 포함된 식입니다. 형식 aNameExp 은 암시적으로 변환할 수 XName있는 형식이어야 합니다String.
      aValue 선택 사항입니다. 특성의 값입니다. 형식은 다음 중 하나입니다.

      - 따옴표로 묶인 리터럴 텍스트입니다.
      - 폼 <%= aValueExp %>의 포함된 식입니다. 모든 형식이 허용됩니다.
    • <%= aExp %>의 포함된 식입니다.

  • />

    선택 사항입니다. 요소가 콘텐츠가 없는 빈 요소임을 나타냅니다.

  • >

    필수 사항입니다. 시작 또는 빈 요소 태그를 종료합니다.

  • elementContents

    선택 사항입니다. 요소의 내용입니다.

    content [ content ... ]

    각각 content 은 다음 중 하나일 수 있습니다.

    • 리터럴 텍스트입니다. 리터럴 텍스트가 있는 경우 모든 공백 elementContents 이 중요해집니다.

    • <%= contentExp %>의 포함된 식입니다.

    • XML 요소 리터럴입니다.

    • XML 주석 리터럴입니다. XML 주석 리터럴을 참조하세요.

    • XML 처리 명령 리터럴입니다. XML 처리 명령 리터럴을 참조하세요.

    • XML CDATA 리터럴입니다. XML CDATA 리터럴을 참조하세요.

  • </[name]>

    선택 사항입니다. 요소의 닫는 태그를 나타냅니다. 임베디드 식의 결과인 경우 선택적 name 매개 변수는 허용되지 않습니다.

반환 값

개체입니다 XElement .

비고

XML 요소 리터럴 구문을 사용하여 코드에서 개체를 만들 XElement 수 있습니다.

비고

XML 리터럴은 줄 연속 문자를 사용하지 않고 여러 줄에 걸쳐 있습니다. 이 기능을 사용하면 XML 문서의 콘텐츠를 복사하여 Visual Basic 프로그램에 직접 붙여넣을 수 있습니다.

양식 <%= exp %> 의 포함된 식을 사용하면 XML 요소 리터럴에 동적 정보를 추가할 수 있습니다. 자세한 내용은 XML에 포함된 식을 참조하세요.

Visual Basic 컴파일러는 XML 요소 리터럴을 생성자에 대한 XElement 호출로 변환하고 필요한 XAttribute 경우 생성자를 호출합니다.

XML 네임스페이스

XML 네임스페이스 접두사는 코드에서 동일한 네임스페이스의 요소를 여러 번 사용하여 XML 리터럴을 만들어야 하는 경우에 유용합니다. 특성 구문을 사용하여 정의하는 문 또는 로컬 접두사를 사용하여 Imports 정의하는 전역 XML 네임스페이스 접두사를 사용할 xmlns:xmlPrefix="xmlNamespace" 수 있습니다. 자세한 내용은 Imports 문(XML 네임스페이스)을 참조하세요.

XML 네임스페이스에 대한 범위 지정 규칙에 따라 로컬 접두사는 전역 접두사보다 우선합니다. 그러나 XML 리터럴이 XML 네임스페이스를 정의하는 경우 포함된 식에 나타나는 식에는 해당 네임스페이스를 사용할 수 없습니다. 포함된 식은 전역 XML 네임스페이스에만 액세스할 수 있습니다.

Visual Basic 컴파일러는 XML 리터럴에서 사용하는 각 전역 XML 네임스페이스를 생성된 코드의 하나의 로컬 네임스페이스 정의로 변환합니다. 사용되지 않는 전역 XML 네임스페이스는 생성된 코드에 표시되지 않습니다.

예제 1

다음 예제에서는 두 개의 중첩된 빈 요소가 있는 간단한 XML 요소를 만드는 방법을 보여줍니다.

Dim test1 As XElement = 
<outer>
    <inner1></inner1>
    <inner2/>
</outer>

Console.WriteLine(test1)

이 예제에서는 다음 텍스트를 표시합니다. 리터럴은 빈 요소의 구조를 유지합니다.

<outer>
  <inner1></inner1>
  <inner2 />
</outer>

예제 2

다음 예제에서는 포함된 식을 사용하여 요소의 이름을 지정하고 특성을 만드는 방법을 보여 줍니다.

Dim elementType = "book"
Dim authorName = "My Author"
Dim attributeName1 = "year"
Dim attributeValue1 = 1999
Dim attributeName2 = "title"
Dim attributeValue2 = "My Book"

Dim book As XElement = 
<<%= elementType %>
    isbn="1234"
    author=<%= authorName %>
    <%= attributeName1 %>=<%= attributeValue1 %>
    <%= New XAttribute(attributeName2, attributeValue2) %>
/>

Console.WriteLine(book)

이 코드는 다음 텍스트를 표시합니다.

<book isbn="1234" author="My Author" year="1999" title="My Book" />

예제 3

다음 예제에서는 XML 네임스페이스 접두사로 선언합니다 ns . 그런 다음 네임스페이스의 접두사를 사용하여 XML 리터럴을 만들고 요소의 최종 양식을 표시합니다.

' Place Imports statements at the top of your program.  
Imports <xmlns:ns="http://SomeNamespace">

Class TestClass1

    Shared Sub TestPrefix()
        ' Create test using a global XML namespace prefix. 
        Dim inner2 = <ns:inner2/>

        Dim test = 
        <ns:outer>
            <ns:middle xmlns:ns="http://NewNamespace">
                <ns:inner1/>
                <%= inner2 %>
            </ns:middle>
        </ns:outer>

        ' Display test to see its final form. 
        Console.WriteLine(test)
    End Sub

End Class

이 코드는 다음 텍스트를 표시합니다.

<ns:outer xmlns:ns="http://SomeNamespace">
  <ns:middle xmlns:ns="http://NewNamespace">
    <ns:inner1 />
    <inner2 xmlns="http://SomeNamespace" />
  </ns:middle>
</ns:outer>

컴파일러는 전역 XML 네임스페이스의 접두사를 XML 네임스페이스의 접두사 정의로 변환했습니다. <ns:middle> 요소는 ns:inner1> 요소에 대한 XML 네임스페이<스 접두사를 다시 정의합니다. 그러나 <ns:inner2> 요소는 문에 정의된 네임스페이스를 Imports 사용합니다.

참고하십시오