Общие сведения о 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.
Примечание. |
---|
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)