Литеральное представление XML-элемента (Visual Basic)

Литерал, представляющий XElement объект.

Синтаксис

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

Детали

  • <

    Обязательный. Открывает тег начального элемента.

  • name

    Обязательный. Имя элемента. Формат является одним из следующих вариантов:

    • Литеральный текст для имени элемента формы, [ePrefix:]eNameгде:

      Часть Description
      ePrefix Необязательно. Префикс пространства имен XML для элемента. Должен быть глобальным пространством имен XML, определенным с Imports помощью инструкции в файле или на уровне проекта, или локальное пространство имен XML, определенное в этом элементе или родительском элементе.
      eName Обязательный. Имя элемента. Формат является одним из следующих вариантов:

      - Литеральный текст. См . имена объявленных XML-элементов и атрибутов.
      — Внедренное выражение формы <%= eNameExp %>. Тип eNameExp должен быть String или тип, который неявно преобразуется в XName.
    • Внедренное выражение формы <%= nameExp %>. Тип должен быть String или тип nameExp неявно преобразован в XName. Внедренное выражение не допускается в закрываемом теге элемента.

  • attributeList

    Необязательно. Список атрибутов, объявленных в литерале.

    attribute [ attribute ... ]

    Каждый attribute из них имеет один из следующих синтаксисов:

    • Назначение атрибутов [aPrefix:]aName=aValueформы, где:

      Часть Description
      aPrefix Необязательно. Префикс пространства имен XML для атрибута. Должен быть глобальным пространством имен XML, определенным с Imports помощью инструкции, или локального пространства имен XML, определенного в этом элементе или родительском элементе.
      aName Обязательный. Имя атрибута. Формат является одним из следующих вариантов:

      - Литеральный текст. См . имена объявленных XML-элементов и атрибутов.
      — Внедренное выражение формы <%= aNameExp %>. Тип aNameExp должен быть String или тип, который неявно преобразуется в XName.
      aValue Необязательно. Значение атрибута. Формат является одним из следующих вариантов:

      — Литеральный текст, заключенный в кавычки.
      — Внедренное выражение формы <%= aValueExp %>. Разрешен любой тип.
    • Внедренное выражение формы <%= aExp %>.

  • />

    Необязательно. Указывает, что элемент является пустым элементом без содержимого.

  • >

    Обязательный. Заканчивает начальный или пустой тег элемента.

  • elementContents

    Необязательно. Содержимое элемента.

    content [ content ... ]

    Каждое content может быть одним из следующих вариантов:

    • Литеральный текст. Все пробелы становятся значительными, elementContents если есть литеральный текст.

    • Внедренное выражение формы <%= contentExp %>.

    • Литерал XML-элемента.

    • Литерал комментариев XML. См . литерал комментариев XML.

    • Литерал инструкции обработки XML. См. литерал инструкций по обработке XML.

    • Литерал XML CDATA. См . литерал CDATA XML.

  • </[name]>

    Необязательно. Представляет закрывающий тег элемента. Необязательный name параметр не допускается, если он является результатом внедренного выражения.

Возвращаемое значение

Объект XElement.

Замечания

Для создания XElement объектов в коде можно использовать синтаксис литерала XML-элемента.

Примечание.

Xml-литерал может охватывать несколько строк без использования символов продолжения строки. Эта функция позволяет скопировать содержимое из XML-документа и вставить его непосредственно в программу Visual Basic.

Внедренные выражения формы <%= exp %> позволяют добавлять динамические сведения в литерал XML-элемента. Дополнительные сведения см. в разделе "Внедренные выражения" в ФОРМАТЕ XML.

Компилятор Visual Basic преобразует литерал XML-элемента в вызовы XElement конструктора и, если это необходимо, XAttribute конструктор.

Пространства имен XML

Префиксы пространства имен XML полезны при создании XML-литералы с элементами из одного пространства имен много раз в коде. Вы можете использовать префиксы глобального пространства имен XML, которые определяются с помощью инструкции или локальных префиксов, которые определяются с помощью Imports синтаксиса xmlns:xmlPrefix="xmlNamespace" атрибута. Дополнительные сведения см. в разделе "Импорт" (пространство имен 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

В следующем примере 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> переопределяет префикс пространства имен XML для <элемента ns:inner1> . Однако элемент <ns:inner2> использует пространство имен, определенное инструкцией Imports .

См. также