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

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

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

Примечание.

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

Play button Сведения о связанных демонстрациях видео см. в статье "Как начать работу с LINQ to XML" и "Как создать электронные таблицы Excel с помощью LINQ to XML?".

Создание XML

В Visual Basic существует два способа создания деревьев XML. Вы можете объявить 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.

Дополнительные сведения см. в разделе "Импорт" (пространство имен 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. Используйте двоеточие для разделения префикса пространства имен XML от имени локального элемента. Ниже приведен пример:

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

См. также