Литеральное представление XML-элемента
Обновлен: Ноябрь 2007
Литерал, представляющий объект XElement.
<name [ attributeList ] />
-or-
<name [ attributeList ] > [ elementContents ] </[ name ]>
Компоненты
<
Обязательный параметр. Открывает начальный тег элемента.name
Обязательный параметр. Имя элемента. Имеет один из следующих форматов:Текст литералов для имени элемента формы [ePrefix:]eName, где:
Компонент
Описание
ePrefix
Необязательный атрибут. Префикс пространства имен XML для указанного элемента. Должно быть глобальным пространством имен XML, которое определено инструкцией Imports в файле или на уровне проекта, или локальным пространством имен XML, которое определено в этом элементе или в родительском элементе.
eName
Обязательный параметр. Имя элемента. Имеет один из следующих форматов:
Текст литерала. См. раздел Имена объявляемых элементов и атрибутов XML.
Встроенные выражения формы <%= NameExp %>. Необходимо, чтобы тип eNameExp был String или типом, который неявным образом преобразовывается в XName .
Встроенные выражения формы <%= nameExp %>. Необходимо, чтобы тип nameExp был String или типом, который неявным образом преобразовывается в XName. Внедренное выражение недопустимо в теге закрытия элемента.
attributeList
Необязательный атрибут. Список атрибутов, объявленных в литерале.attribute [ attribute ... ]
Каждый параметр attribute имеет один из следующих синтаксисов:
Назначение атрибута формы [aPrefix:]aName=aValue, где:
Компонент
Описание
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. См. раздел Литеральное представление XML-раздела CDATA.
</[name]>
Необязательный атрибут. Представляет закрывающий тег для элемента. Необязательный параметр name не допускается, когда он является результатом встроенного выражения.
Возвращаемое значение
Объект XElement.
Заметки
Можно использовать синтаксис литерального представления XML-элемента для создания объектов XElement в коде.
![]() |
---|
XML-литерал может занимать несколько строк без использования символа продолжения строки. Эта особенность позволяет копировать содержимое из XML-документа и вставлять его непосредственно в программу Visual Basic. |
Встроенные выражения формы <%= exp %> позволяют добавлять динамические данные литерального представления XML-элемента. Дополнительные сведения см. в разделе Встроенные выражения в XML.
Компилятор Visual Basic преобразует литеральное представление XML-элемента в вызовы конструктора XElement и, если необходимо, конструктораXAttribute.
Пространства имен XML
Префиксы пространства имен XML полезны в ситуациях, когда необходимо создать в коде множественные XML-литералы с элементами одного пространства имен. Можно использовать глобальные префиксы пространства имен XML, которые определяются с помощью инструкции Imports, или локальные префиксы, которые можно определить с помощью синтаксиса атрибута 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> переопределяет префикс пространства имен XML для элемента < ns:inner1 >. Однако элемент < ns:inner2 > использует пространство имен, определенное инструкцией Imports.
См. также
Основные понятия
Имена объявляемых элементов и атрибутов XML
Ссылки
Литеральное представление XML-раздела CDATA
Оператор Imports (пространство имен .NET и тип)