Поделиться через


Общие сведения об 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)

XElement

Основные понятия

Встроенные выражения в XML (Visual Basic)

Другие ресурсы

Создание XML в Visual Basic

XML-литералы (Visual Basic)