XML 요소 리터럴
업데이트: 2007년 11월
XElement 개체를 나타내는 리터럴입니다.
<name [ attributeList ] />
-or-
<name [ attributeList ] > [ elementContents ] </[ name ]>
구성 요소
<
필수적 요소. 시작 요소 태그를 엽니다.name
필수적 요소. 요소의 이름입니다. 형식은 다음 중 하나입니다.[ePrefix:]eName 형식의 요소 이름에 대한 리터럴 텍스트입니다. 다음은 각 구성 요소에 대한 설명입니다.
구성 요소
설명
ePrefix
선택적 요소. 요소의 XML 네임스페이스 접두사입니다. 파일 또는 프로젝트 수준에서 Imports 문을 사용하여 정의된 전역 XML 네임스페이스이거나 이 요소 또는 부모 요소에서 정의된 로컬 XML 네임스페이스여야 합니다.
eName
필수적 요소. 요소의 이름입니다. 형식은 다음 중 하나입니다.
리터럴 텍스트입니다. 선언된 XML 요소 및 특성의 이름을 참조하십시오.
<%= eNameExp %> 형식의 포함 식입니다. eNameExp의 형식은 String이거나 암시적으로 XName으로 변환할 수 있는 형식이어야 합니다.
<%= nameExp %> 형식의 포함 식입니다. nameExp의 형식은 String이거나 암시적으로 XName으로 변환할 수 있는 형식이어야 합니다. 포함 식은 요소의 닫는 태그에서 사용할 수 없습니다.
attributeList
선택적 요소. 리터럴에서 선언된 특성의 목록입니다.attribute [ attribute ... ]
각 attribute에는 다음 구문 중 하나가 있습니다.
[aPrefix:]aName=aValue 형식의 특성 할당입니다. 다음은 각 구성 요소에 대한 설명입니다.
구성 요소
설명
aPrefix
선택적 요소. 특성의 XML 네임스페이스 접두사입니다. Imports 문을 사용하여 정의된 전역 XML 네임스페이스이거나 이 요소 또는 부모 요소에서 정의된 로컬 XML 네임스페이스여야 합니다.
aName
필수적 요소. 특성의 이름으로입니다. 형식은 다음 중 하나입니다.
리터럴 텍스트입니다. 선언된 XML 요소 및 특성의 이름을 참조하십시오.
<%= aNameExp %> 형식의 포함 식입니다. aNameExp의 형식은 String이거나 암시적으로 XName으로 변환할 수 있는 형식이어야 합니다.
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 문(.NET 네임스페이스 및 형식)을 참조하십시오.
XML 네임스페이스의 범위 지정 규칙에 따라 로컬 접두사가 전역 접두사보다 우선 순위를 갖습니다. 그러나 XML 리터럴이 XML 네임스페이스를 정의하는 경우에는 포함 식에 나타나는 식에서 해당 네임스페이스를 사용할 수 없습니다. 포함 식은 전역 XML 네임스페이스에만 액세스할 수 있습니다.
Visual Basic 컴파일러는 XML 리터럴에 의해 사용되는 각 전역 XML 네임스페이스를 생성된 코드에 있는 하나의 로컬 네임스페이스 정의로 변환합니다. 사용되지 않는 전역 XML 네임스페이스는 생성된 코드에 나타나지 않습니다.
예제
다음 예제에서는 두 개의 중첩된 빈 요소가 있는 간단한 XML 요소를 만드는 방법을 보여 줍니다.
Dim test1 As XElement = _
<outer>
<inner1></inner1>
<inner2/>
</outer>
Console.WriteLine(test1)
이 예제에서는 다음 텍스트를 표시합니다. 리터럴은 빈 요소의 구조를 유지합니다.
<outer>
<inner1></inner1>
<inner2 />
</outer>
다음 예제에서는 포함 식을 사용하여 요소의 이름을 지정하고 특성을 만드는 방법을 보여 줍니다.
Dim elementType As String = "book"
Dim attributeName1 As String = "year"
Dim attributeValue1 As Integer = 1999
Dim attributeName2 As String = "title"
Dim attributeValue2 As String = "My Book"
Dim book As XElement = _
<<%= elementType %>
isbn="1234"
<%= attributeName1 %>=<%= attributeValue1 %>
<%= New XAttribute(attributeName2, attributeValue2) %>
/>
Console.WriteLine(book)
이 코드가 표시하는 텍스트는 다음과 같습니다.
<book isbn="1234" year="1999" title="My Book" />
다음 예제에서는 ns를 XML 네임스페이스 접두사로 선언합니다. 그런 다음 네임스페이스의 접두사를 사용하여 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 문에 의해 정의된 네임스페이스를 사용합니다.