Einführung in XML-Literale in Visual Basic

Dieser Abschnitt enthält Informationen zum Erstellen von XML-Strukturen in Visual Basic.

Informationen zur Verwendung der Ergebnisse von LINQ-Abfragen als Inhalt für eine XML-Struktur finden Sie unter funktionale Konstruktion (LINQ to XML) im Vergleich.

Weitere Informationen zu XML-Literalen in Visual Basic finden Sie unter Übersicht über LINQ to XML in Visual Basic.

Erstellen von XML-Strukturen

Im folgenden Beispiel wird gezeigt, wie Sie ein XElement, in diesem Fall contacts, erstellen können.

Dim contacts As XElement = _
    <Contacts>
        <Contact>
            <Name>Patrick Hines</Name>
            <Phone>206-555-0144</Phone>
            <Address>
                <Street1>123 Main St</Street1>
                <City>Mercer Island</City>
                <State>WA</State>
                <Postal>68042</Postal>
            </Address>
        </Contact>
    </Contacts>

Erstellen eines "XElement" mit einfachem Inhalt

Ein XElement mit einfachem Inhalt können Sie wie folgt erstellen:

Dim n as XElement = <Customer>Adventure Works</Customer>
Console.WriteLine(n) 

Dieses Beispiel führt zur folgenden Ausgabe:

<Customer>Adventure Works</Customer>

Erstellen eines leeren Elements

Ein leeres XElement können Sie wie folgt erstellen:

Dim n As XElement = <Customer/>
Console.WriteLine(n)

Dieses Beispiel führt zur folgenden Ausgabe:

<Customer />

Verwenden von eingebetteten Ausdrücken

Ein wichtiges Merkmal von XML-Literalen besteht darin, dass sie eingebettete Ausdrücke zulassen.Mit eingebetteten Ausdrücken können Sie Ausdrücke auswerten und die Ergebnisse eines Ausdrucks in die XML-Struktur einfügen.Wenn die Auswertung des Ausdrucks einen XElement-Typ ergibt, wird ein Element in die Struktur eingefügt.Wenn die Auswertung des Ausdrucks einen XAttribute-Typ ergibt, wird ein Attribut in die Struktur eingefügt.Sie können Elemente und Attribute nur an den Stellen in die Struktur einfügen, an denen sie gültig sind.

Dabei muss beachtet werden, dass ein eingebetteter Ausdruck nur einen einzelnen Ausdruck enthalten kann.Das Einbetten mehrerer Anweisungen ist nicht möglich.Wenn ein Ausdruck sich über eine einzelne Zeile hinaus erstreckt, müssen Sie das Zeilenfortsetzungszeichen verwenden.

Wenn Sie einen eingebetteten Ausdruck zum Hinzufügen vorhandener Knoten (inklusive Elementen) und Attribute zu einer neuen XML-Struktur verwenden und die vorhandenen Knoten bereits ein übergeordnetes Element besitzen, werden die Knoten geklont,und die neu geklonten Knoten werden an die neue XML-Struktur angefügt.Wenn die vorhandenen Knoten keine übergeordneten Elemente besitzen, werden sie einfach an die neue XML-Struktur angefügt.Dies wird im letzten Beispiel in diesem Thema gezeigt.

Das folgende Beispiel verwendet zum Einfügen eines Elements in die Struktur einen eingebetteten Ausdruck:

Dim xmlTree1 As XElement = _
    <Root>
        <Child>Contents</Child>
    </Root>
Dim xmlTree2 As XElement = _
    <Root>
        <%= xmlTree1.<Child> %>
    </Root>
Console.WriteLine(xmlTree2)

Dieses Beispiel führt zur folgenden Ausgabe:

<Root>
  <Child>Contents</Child>
</Root>

Verwenden von eingebetteten Ausdrücken für Inhalt

Sie können mit eingebetteten Ausdrücken Elemente mit Inhalt versehen:

Dim str As String
str = "Some content"
Dim root As XElement = <Root><%= str %></Root>
Console.WriteLine(root)

Dieses Beispiel führt zur folgenden Ausgabe:

<Root>Some content</Root>

Verwenden einer LINQ-Abfrage in einem eingebetteten Ausdruck

Sie können die Ergebnisse einer LINQ-Abfrage für den Inhalt eines Elements verwenden:

Dim arr As Integer() = {1, 2, 3}

Dim n As XElement = _
    <Root>
        <%= From i In arr Select <Child><%= i %></Child> %>
    </Root>

Console.WriteLine(n)

Dieses Beispiel führt zur folgenden Ausgabe:

<Root>
  <Child>1</Child>
  <Child>2</Child>
  <Child>3</Child>
</Root>

Verwenden von eingebetteten Ausdrücken für Knotennamen

Sie können eingebettete Ausdrücke auch zum Berechnen von Attributnamen, Attributwerten, Elementnamen und Elementwerten verwenden:

Dim eleName As String = "ele"
Dim attName As String = "att"
Dim attValue As String = "aValue"
Dim eleValue As String = "eValue"
Dim n As XElement = _
    <Root <%= attName %>=<%= attValue %>>
        <<%= eleName %>>
            <%= eleValue %>
        </>
    </Root>
Console.WriteLine(n)

Dieses Beispiel führt zur folgenden Ausgabe:

<Root att="aValue">
  <ele>eValue</ele>
</Root>

Klonen oderAnfügen?

Wie oben erwähnt: Wenn Sie einen eingebetteten Ausdruck zum Hinzufügen vorhandener Knoten (inklusive Elementen) und Attribute zu einer neuen XML-Struktur verwenden und die vorhandenen Knoten bereits ein übergeordnetes Element besitzen, werden die Knoten geklont, und die neu geklonten Knoten werden an die neue XML-Struktur angefügt.Besitzen die vorhandenen Knoten hingegen keine übergeordneten Elemente, werden sie einfach an die neue XML-Struktur angefügt.

' Create a tree with a child element.
Dim xmlTree1 As XElement = _
    <Root>
        <Child1>1</Child1>
    </Root>

' Create an element that is not parented.
Dim child2 As XElement = <Child2>2</Child2>

' Create a tree and add Child1 and Child2 to it.
Dim xmlTree2 As XElement = _
    <Root>
        <%= xmlTree1.<Child1>(0) %>
        <%= child2 %>
    </Root>

' Compare Child1 identity.
Console.WriteLine("Child1 was {0}", _
    IIf(xmlTree1.Element("Child1") Is xmlTree2.Element("Child1"), _
    "attached", "cloned"))

' Compare Child2 identity.
Console.WriteLine("Child2 was {0}", _
    IIf(child2 Is xmlTree2.Element("Child2"), _
    "attached", "cloned"))

Mit diesem Beispiel wird die folgende Ausgabe erzeugt:

Child1 was cloned
Child2 was attached

Siehe auch

Konzepte

Erstellen von XML-Strukturen