Freigeben über


XML Literals in Visual Basic (LINQ to XML)

Dieser Artikel enthält Informationen zum Erstellen von XML-Strukturen in Visual Basic mithilfe von XML-Literalen und eingebetteten Ausdrücken.

Beispiel: Verwenden von XML-Literalen zum Erstellen einer XML-Struktur

Im folgenden Beispiel wird gezeigt, wie Sie mit XML Literals 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>

Beispiel: Verwenden von XML-Literalen zum Erstellen eines XElement mit einfachen Inhalten

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

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

Dieses Beispiel erzeugt die folgende Ausgabe:

<Customer>Adventure Works</Customer>

Beispiel: Verwenden eines XML-Literals zum Erstellen eines leeren Elements

Ein leeres XElement können Sie wie folgt erstellen:

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

Dieses Beispiel erzeugt die folgende Ausgabe:

<Customer />

Verwenden eingebetteter Ausdrücke zum Erstellen von Inhalten

Eine wichtige Funktion 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.

Beispiel: Verwenden eines eingebetteten Ausdrucks zum Einfügen eines Elements

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

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

Dieses Beispiel erzeugt die folgende Ausgabe:

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

Beispiel: Verwenden eines eingebetteten Ausdrucks für Inhalte

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 erzeugt die folgende Ausgabe:

<Root>Some content</Root>

Beispiel: 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 erzeugt die folgende Ausgabe:

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

Beispiel: Verwenden eines eingebetteten Ausdrucks zum Bereitstellen von 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 erzeugt die folgende Ausgabe:

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

Beispiel: Verwenden eines eingebetteten Ausdrucks zum Klonen und Anfügen von Knoten

Wenn Sie, wie bereits erwähnt, einen eingebetteten Ausdruck verwenden, um bestehende Knoten (einschließlich Elemente) und Attribute zu einem neuen XML-Baum hinzuzufügen, und wenn die hinzugefügten Knoten bereits übergeordnet sind, werden die Knoten geklont und die Klone an den neuen XML-Baum angehängt. Wenn die vorhandenen Knoten keine übergeordneten Elemente besitzen, werden sie einfach an die neue XML-Struktur angefügt.

Der folgende Code zeigt das Verhalten, wenn Sie einer Struktur ein übergeordnetes Element und ein Element ohne übergeordnetes Element hinzufügen:

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

' Create an element that's 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"))

Dieses Beispiel erzeugt die folgende Ausgabe:

Child1 was cloned
Child2 was attached

Siehe auch