Литеральное представление 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
.