Общие сведения о LINQ to XML в Visual Basic

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

Visual Basic обеспечивает поддержку LINQ to XML с помощью XML-литералов и свойств осей XML. Это позволяет использовать знакомый, удобный синтаксис для работы с XML в коде Visual Basic. XML-литералы позволяют включать XML непосредственно в код. Свойства осей XML позволяют получить доступ к дочерним узлам, узлам потомков и атрибутам XML-литералов. Дополнительные сведения см. в разделах Общие сведения о XML-литералах и Доступ к XML в Visual Basic.

LINQ to XML — это программируемые в памяти XML API, которые позволяют воспользоваться преимуществами LINQ (Language-Integrated Query). Хотя возможен прямой вызов API LINQ, только в Visual Basic можно объявить XML-литералы и получить непосредственный доступ к свойствам осей XML.

Bb384460.alert_note(ru-ru,VS.90).gifПримечание.

XML-литералы и свойства осей XML не поддерживаются в коде объявлений на странице ASP.NET. Чтобы использовать XML-функции Visual Basic, поместите код на страницу с кодом программной части в приложении ASP.NET.

Создание XML

Создать XML-деревья в Visual Basic можно двумя способами. Можно объявить XML-литерал непосредственно в коде или использовать API LINQ для создания дерева. Оба процесса позволяют отразить в коде заключительную структуру XML-дерева. Например, с помощью приведенного ниже кода создается 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 в Visual Basic.

Доступ и переходы в XML

Visual Basic предоставляет свойства осей XML для доступа к структурам XML и перемещения по ним. С помощью этих свойств можно получить доступ к XML-элементам и атрибутам, указывая имена дочерних XML-элементов. Можно также явно вызывать методы LINQ для выполнения переходов и поиска элементов и атрибутов. Например, в приведенном ниже коде свойства осей XML используются для ссылки на атрибуты и дочерние элементы XML-элемента. В примере кода используется запрос LINQ для извлечения дочерних элементов и вывода их в виде XML-элементов, эффективно выполняя преобразование.

' Place Imports statements at the top of your program.  
Imports <xmlns:ns="http://SomeNamespace">

Module Sample1

    Sub SampleTransform()

        ' Create test by using a global XML namespace prefix. 

        Dim contact = _
            <ns:contact>
                <ns:name>Patrick Hines</ns:name>
                <ns:phone ns:type="home">206-555-0144</ns:phone>
                <ns:phone ns:type="work">425-555-0145</ns:phone>
            </ns:contact>

        Dim phoneTypes = _
          <phoneTypes>
              <%= From phone In contact.<ns:phone> _
                  Select <type><%= phone.@ns:type %></type> _
              %>
          </phoneTypes>

        Console.WriteLine(phoneTypes)
    End Sub

End Module

Дополнительные сведения см. в разделе Доступ к XML в Visual Basic.

Пространства имен XML

Visual Basic позволяет указать псевдоним для глобального пространства имен XML, используя оператор Imports. В следующем примере показано, как использовать оператор Imports для импорта пространства имен XML:

Imports <xmlns:ns="http://someNamespace">

Можно использовать псевдоним пространства имен XML при доступе к свойствам осей XML и объявить XML-литералы для документов и элементов XML.

Можно извлечь объект XNamespace для конкретного префикса пространства имен, используя Оператор GetXmlNamespace.

Дополнительные сведения см. в разделе Оператор Imports (пространство имен XML).

Использование пространств имен XML в XML-литералах

В следующем примере показано, как создать объект XElement, в котором используется глобальное пространство имен ns:

Dim contact1 As XElement = _
    <ns:contact>
        <ns:name>Patrick Hines</ns:name>
        <ns:phone type="home">206-555-0144</ns:phone>
        <ns:phone type="work">425-555-0145</ns:phone>
    </ns:contact>

Console.WriteLine(contact1)

Компилятор Visual Basic переводит XML-литералы, содержащие псевдонимы пространства имен XML, в эквивалентный код, содержащий XML-представление для использования пространств имен XML, с атрибутом xmlns. При компиляции код примера из предыдущего раздела формирует по существу тот же самый исполняемый код, как и в следующем примере:

Dim contact2 As XElement = _
    <ns1:contact xmlns:ns1="http://someNamespace">
        <ns1:name>Patrick Hines</ns1:name>
        <ns1:phone type="home">206-555-0144</ns1:phone>
        <ns1:phone type="work">425-555-0145</ns1:phone>
    </ns1:contact>

Console.WriteLine(contact2)

Использование пространств имен XML в свойствах осей XML

Пространства имен, объявленные в XML-литералах, недоступны для использования в свойствах осей XML. Однако глобальные пространства имен могут использоваться со свойствами осей XML. Используйте двоеточие для отделения префикса пространства имен XML от имени локального элемента. Например:

Console.WriteLine("Contact name is: " & contact1.<ns:name>.Value)

См. также

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

XML в Visual Basic

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

Доступ к XML в Visual Basic

Обработка XML в Visual Basic