Übersicht über LINQ to XML in Visual Basic

Visual Basic unterstützt LINQ to XML über XML-Literale und XML-Achseneigenschaften. Dadurch können Sie eine vertraute, praktische Syntax für die Arbeit mit XML in Ihrem Visual Basic-Code verwenden. XML-Literale ermöglichen die direkte Integration von XML in Ihren Code. XML-Achseneigenschaften ermöglichen den Zugriff auf untergeordnete Knoten, Nachfolgerknoten und Attribute eines XML-Literals. Weitere Informationen finden Sie unter Übersicht zu XML-Literalen (Visual Basic) sowie unter Zugreifen auf XML in Visual Basic.

LINQ to XML ist eine XML-Programmierschnittstelle (API) im Arbeitsspeicher, die speziell für die Nutzung von Language-Integrated Query (LINQ) entwickelt wurde. Die LINQ-APIs können zwar direkt aufgerufen werden, aber nur mit Visual Basic können Sie XML-Literale deklarieren und direkt auf XML-Achseneigenschaften zugreifen.

Hinweis

XML-Literale und XML-Achseneigenschaften werden in deklarativem Code auf einer ASP.NET-Seite nicht unterstützt. Wenn Sie XML-Features von Visual Basic nutzen möchten, müssen Sie Ihren Code auf einer CodeBehind-Seite in Ihrer ASP.NET-Anwendung platzieren.

Play button Entsprechende Videodemonstrationen finden Sie unter [Vorgehensweise:] Erste Schritte mit LINQ to XML sowie unter [Vorgehensweise:] Erstellen von Excel-Tabellen mit LINQ to XML.

Erstellen von XML

Es gibt zwei Möglichkeiten, XML-Strukturen in Visual Basic zu erstellen: Sie können ein XML-Literal direkt im Code deklarieren oder die LINQ-APIs verwenden, um die Struktur zu erstellen. Beide Prozesse ermöglichen es dem Code, die endgültige Struktur der XML-Struktur widerzuspiegeln. Im folgenden Codebeispiel wird beispielsweise ein XML-Element erstellt:

Dim contact1 As XElement = 
    <contact>
      <name>Patrick Hines</name>
      <phone type="home">206-555-0144</phone>
      <phone type="work">425-555-0145</phone>
    </contact>

Weitere Informationen finden Sie unter Erstellen von XML in Visual Basic.

Zugreifen auf und Navigieren in XML

Visual Basic stellt XML-Achseneigenschaften für den Zugriff auf und die Navigation durch XML-Strukturen bereit. Mit diesen Eigenschaften können Sie auf XML-Elemente und -Attribute zugreifen, indem Sie die Namen der untergeordneten XML-Elemente angeben. Alternativ können Sie explizit die LINQ-Methoden für die Navigation und Suche im Zusammenhang mit Elementen und Attributen aufrufen. Im folgenden Codebeispiel werden beispielsweise XML-Achseneigenschaften verwendet, um auf die Attribute und untergeordneten Elemente eines XML-Elements zu verweisen. Im Codebeispiel wird eine LINQ-Abfrage verwendet, um untergeordnete Elemente abzurufen und als XML-Elemente auszugeben, was im Grunde einer Transformation entspricht.

' 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

Weitere Informationen finden Sie unter Zugreifen auf XML in Visual Basic.

XML-Namespaces

In Visual Basic können Sie mithilfe der Imports-Anweisung einen Alias für einen globalen XML-Namespace angeben. Das folgende Beispiel zeigt, wie Sie die Imports-Anweisung verwenden, um einen XML-Namespace zu importieren:

Imports <xmlns:ns="http://someNamespace">

Sie können einen XML-Namespacealias verwenden, wenn Sie auf XML-Achseneigenschaften zugreifen und XML-Literale für XML-Dokumente und -Elemente deklarieren.

Mithilfe des GetXmlNamespace-Operators können Sie ein XNamespace-Objekt für ein bestimmtes Namespacepräfix abrufen.

Weitere Informationen finden Sie unter Imports-Anweisung (XML-Namespace).

Verwenden von XML-Namespaces in XML-Literalen

Das folgende Beispiel zeigt, wie Sie ein XElement-Objekt erstellen, das den globalen Namespace ns verwendet:

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)

Der Visual Basic-Compiler übersetzt XML-Literale, die XML-Namespacealiase enthalten, in äquivalenten Code, der die XML-Notation für die Verwendung von XML-Namespaces (mit dem xmlns-Attribut) verwendet. Bei der Kompilierung erzeugt der Code im Beispiel des vorherigen Abschnitts im Wesentlichen den gleichen ausführbaren Code wie im folgenden Beispiel:

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)

Verwenden von XML-Namespaces in XML-Achseneigenschaften

In XML-Literalen deklarierte XML-Namespaces sind nicht für die Verwendung in XML-Achseneigenschaften verfügbar. Globale Namespaces können jedoch mit den XML-Achseneigenschaften verwendet werden. Verwenden Sie einen Doppelpunkt, um das XML-Namespacepräfix vom Namen des lokalen Elements zu trennen. Dies ist ein Beispiel:

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

Siehe auch