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


Общие сведения о XML-литералах

Обновлен: Ноябрь 2007

Литерал 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.

Дополнительные сведения о различиях между синтаксисом литералов 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>
Bb384629.alert_note(ru-ru,VS.90).gifПримечание.

Синтаксис 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, но в качестве параметра 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

Ссылки

XML-литерал документа

Литеральное представление XML-элемента

XElement

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

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

XML-литералы