Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
XML-литерал позволяет напрямую встроить XML в ваш код на Visual Basic. Синтаксис литерала XML представляет объекты LINQ to XML, и он аналогичен синтаксису XML 1.0. Это упрощает создание XML-элементов и документов программным способом, так как код имеет ту же структуру, что и окончательный XML.
Visual Basic компилирует XML-литералы в объекты LINQ to XML. LINQ to XML предоставляет простую объектную модель для создания и управления XML, и эта модель хорошо интегрируется с Language-Integrated запросом (LINQ). Дополнительные сведения см. в разделе XElement.
Выражение Visual Basic можно внедрить в XML-литерал. Во время выполнения приложение создает объект LINQ to XML для каждого литерала, включив значения внедренных выражений. Это позволяет указать динамическое содержимое внутри XML-литерала. Дополнительные сведения см. в разделе "Внедренные выражения" в ФОРМАТЕ XML.
Для получения дополнительной информации о различиях между синтаксисом XML-литералов и синтаксисом XML 1.0 посмотрите XML-литералы и спецификацию XML 1.0.
Простые литералы
Вы можете создать объект LINQ to XML в коде Visual Basic, введя или вставив допустимый XML-код. Литерал XML-элемента возвращает XElement объект. Дополнительные сведения см. в разделах «Литерал XML-элемента» и «Литералы XML и спецификация XML 1.0». В следующем примере создается XML-элемент с несколькими дочерними элементами.
Dim contact1 As XElement =
<contact>
<name>Patrick Hines</name>
<phone type="home">206-555-0144</phone>
<phone type="work">425-555-0145</phone>
</contact>
XML-документ можно создать с помощью XML-литерала, начиная с <?xml version="1.0"?>
, как показано в следующем примере. Литеральный объект в XML-документе возвращает объект XDocument. Для получения дополнительной информации см. XML Document Literal.
Dim contactDoc As XDocument =
<?xml version="1.0"?>
<contact>
<name>Patrick Hines</name>
<phone type="home">206-555-0144</phone>
<phone type="work">425-555-0145</phone>
</contact>
Замечание
Синтаксис XML-литерала в Visual Basic не идентичен синтаксису в спецификации XML 1.0. Дополнительные сведения см. в разделе XML-литералы и спецификация XML 1.0.
Продолжение строки
XML-литерал может охватывать несколько строк без использования символов продолжения строки (последовательность пробела-подчеркивания-энтер). Это упрощает сравнение XML-литералы в коде с XML-документами.
Компилятор обрабатывает символы продолжения строки как часть XML-литерала. Поэтому следует использовать последовательность 'пробел-символ нижнего подчеркивания-ввод' только если она принадлежит объекту LINQ to XML.
Тем не менее, если в внедрённом выражении имеется многострочное выражение, вам потребуются символы продолжения строки. Дополнительные сведения см. в разделе "Внедренные выражения" в ФОРМАТЕ XML.
Внедрение запросов в XML-литералы
Запрос можно использовать во встроенном выражении. При этом элементы, возвращаемые запросом, добавляются в XML-элемент. Это позволяет добавить динамическое содержимое, например результат запроса пользователя, в XML-литерал.
Например, следующий код использует внедренный запрос для создания XML-элементов из элементов phoneNumbers2
массива, а затем добавления этих элементов в качестве дочерних contact2
элементов.
Public Class XmlSamples
Public Sub Main()
' Initialize the objects.
Dim phoneNumbers2 As Phone() = {
New Phone("home", "206-555-0144"),
New Phone("work", "425-555-0145")}
' Convert the data contained in phoneNumbers2 to XML.
Dim contact2 =
<contact>
<name>Patrick Hines</name>
<%= From p In phoneNumbers2
Select <phone type=<%= p.Type %>><%= p.Number %></phone>
%>
</contact>
Console.WriteLine(contact2)
End Sub
End Class
Class Phone
Public Type As String
Public Number As String
Public Sub New(ByVal t As String, ByVal n As String)
Type = t
Number = n
End Sub
End Class
Как компилятор создает объекты из XML-литералов
Компилятор Visual Basic преобразует XML-литералы в вызовы эквивалентных конструкторов LINQ to XML для создания объекта LINQ to XML. Например, компилятор Visual Basic преобразует следующий пример кода в вызов конструктора XProcessingInstruction для инструкции xml-версии, вызовы конструктора XElement для элементов <contact>
, <name>
и <phone>
, а также вызов конструктора XAttribute для атрибута type
. В частности, учитывая атрибуты в следующем примере, компилятор Visual Basic будет вызывать XAttribute(XName, Object) конструктор дважды. Первый будет передавать значение type
параметра name
и значение home
параметра value
. Второй также передает значение type
параметра name
, но значение work
параметра value
.
Dim contactDoc As XDocument =
<?xml version="1.0"?>
<contact>
<name>Patrick Hines</name>
<phone type="home">206-555-0144</phone>
<phone type="work">425-555-0145</phone>
</contact>