Dela via


Ö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.

Play button 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)

Se även