Общие сведения о 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.
Сведения о связанных демонстрациях видео см. в статье "Как начать работу с 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)