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


Общие сведения об 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). Дополнительные сведения см. в разделе 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-документа.

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>

См. также