Översikt över LINQ till XML i Visual Basic
Visual Basic har stöd för LINQ till XML via XML-literaler och XML-axelegenskaper. På så sätt kan du använda en välbekant, praktisk syntax för att arbeta med XML i Visual Basic-koden. Med XML-literaler kan du inkludera XML direkt i koden. Med egenskaper för XML-axeln kan du komma åt underordnade noder, underordnade noder och attribut för en XML-literal. Mer information finns i Översikt över XML-literaler och åtkomst till XML i Visual Basic.
LINQ till XML är ett minnesinternt XML-programmerings-API som utformats specifikt för att dra nytta av LINQ (Language-Integrated Query). Även om du kan anropa LINQ-API:erna direkt kan du bara använda Visual Basic för att deklarera XML-literaler och komma åt XML-axelegenskaper direkt.
Kommentar
XML-literaler och XML-axelegenskaper stöds inte i deklarativ kod på en ASP.NET sida. Om du vill använda Visual Basic XML-funktioner placerar du koden på en sida bakom koden i ditt ASP.NET-program.
Relaterade videodemonstrationer finns i How Do I Get Started with LINQ to XML? and How Do I Create Excel Spreadsheets using LINQ to XML?.
Skapa XML
Det finns två sätt att skapa XML-träd i Visual Basic. Du kan deklarera en XML-literal direkt i kod, eller så kan du använda LINQ-API:erna för att skapa trädet. Båda processerna gör det möjligt för koden att återspegla xml-trädets slutliga struktur. I följande kodexempel skapas till exempel ett XML-element:
Dim contact1 As XElement =
<contact>
<name>Patrick Hines</name>
<phone type="home">206-555-0144</phone>
<phone type="work">425-555-0145</phone>
</contact>
Mer information finns i Skapa XML i Visual Basic.
Komma åt och navigera i XML
Visual Basic tillhandahåller XML-axelegenskaper för att komma åt och navigera i XML-strukturer. Med de här egenskaperna kan du komma åt XML-element och -attribut genom att ange de underordnade XML-elementnamnen. Du kan också uttryckligen anropa LINQ-metoderna för att navigera och hitta element och attribut. I följande kodexempel används till exempel XML-axelegenskaper för att referera till attribut och underordnade element i ett XML-element. Kodexemplet använder en LINQ-fråga för att hämta underordnade element och mata ut dem som XML-element, vilket effektivt utför en transformering.
' 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
Mer information finns i Komma åt XML i Visual Basic.
XML-namnområden
Med Visual Basic kan du ange ett alias för ett globalt XML-namnområde med hjälp av -instruktionen Imports
. I följande exempel visas hur du använder -instruktionen Imports
för att importera ett XML-namnområde:
Imports <xmlns:ns="http://someNamespace">
Du kan använda ett XML-namnområdesalias när du kommer åt XML-axelegenskaper och deklarera XML-literaler för XML-dokument och -element.
Du kan hämta ett XNamespace objekt för ett visst namnområdesprefix med hjälp av Operatorn GetXmlNamespace.
Mer information finns i Importinstruktor (XML-namnområde).
Använda XML-namnområden i XML-literaler
I följande exempel visas hur du skapar ett XElement objekt som använder det globala namnområdet 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-kompilatorn översätter XML-literaler som innehåller XML-namnområdesalias till motsvarande kod som använder XML-notationen för att använda XML-namnområden med xmlns
attributet . När koden i föregående avsnitts exempel kompileras genererar den i stort sett samma körbara kod som i följande exempel:
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)
Använda XML-namnområden i XML-axelegenskaper
XML-namnområden som deklarerats i XML-literaler är inte tillgängliga för användning i XML-axelegenskaper. Globala namnområden kan dock användas med XML-axelns egenskaper. Använd ett kolon för att separera XML-namnområdesprefixet från det lokala elementnamnet. Följande är ett exempel:
Console.WriteLine("Contact name is: " & contact1.<ns:name>.Value)