Общие сведения об XML-литералах (Visual Basic)
Литерал XML позволяет внедрять XML непосредственно в код Visual Basic. Синтаксис литерала XML представляет объекты LINQ to XML и подобен синтаксису XML 1.0. Это упрощает программное создание XML-элементов и документов, так как код имеет такую же структуру, как окончательный XML.
При компиляции Visual Basic превращает литералы XML в объекты LINQ to XML. LINQ to XML предоставляет простую объектную модель создания и управления XML. Эта модель хорошо интегрируется с LINQ (Language-Integrated Query). Дополнительные сведения см. в разделе XElement.
Можно внедрить выражение Visual Basic в литерал XML. Во время выполнения приложение создает объект LINQ to XML для каждого литерала, включая значения внедренных выражений. Это позволяет указывать динамическое содержимое в литералах XML. Дополнительные сведения см. в разделе Встроенные выражения в XML (Visual Basic).
Дополнительные сведения о различиях между синтаксисом литералов XML и синтаксисом XML 1.0 см. в разделе XML-литералы и спецификация XML 1.0 (Visual Basic).
Простые литералы
Можно создать объект LINQ to XML в коде Visual Basic, введя или вставив корректный XML. Литерал XML-элемента возвращает объект XElement. Дополнительные сведения см. в разделах Литеральное представление XML-элемента (Visual Basic) и XML-литералы и спецификация XML 1.0 (Visual Basic). В следующем примере создается 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-литерал документа (Visual Basic).
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 (Visual Basic).
Продолжение строки
XML-литерал может занимать несколько строк без использования символа продолжения строки (последовательность пробел-символ подчеркивания-возврат каретки). Это упрощает сравнение XML-литералов в коде с помощью XML-документов.
Компилятор рассматривает символы продолжения строки как часть XML-литерала. Поэтому следует использовать последовательность (пробел-символ подчеркивания-возврат каретки), только если она принадлежит к объекту LINQ to XML.
Тем не менее, символы продолжения строки все-таки нужны при наличии многострочного выражения во внедренном выражении. Дополнительные сведения см. в разделе Встроенные выражения в XML (Visual Basic).
Внедрение запросов в 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, но в качестве параметра value будет значение work.
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-элемента (Visual Basic)
Основные понятия
Встроенные выражения в XML (Visual Basic)