Freigeben über


Übersicht über XML-Literale

Aktualisiert: November 2007

Mit einem XML-Literal kann XML direkt in den Visual Basic-Code integriert werden. Die XML-Literalsyntax stellt LINQ to XML-Objekte dar und ähnelt der XML 1.0-Syntax. Dies vereinfacht die programmgesteuerte Erstellung von XML-Elementen und -Dokumenten, da der Code dieselbe Struktur hat wie der fertige XML-Code.

Visual Basic kompiliert XML-Literale in LINQ to XML-Objekte. LINQ to XML stellt ein einfaches Objektmodell zur Erstellung und Bearbeitung von XML zur Verfügung, das gut in Sprachintegrierte Abfrage (Language-Integrated Query, LINQ) integriert ist. Weitere Informationen finden Sie unter XElement.

Sie können einen Visual Basic-Ausdruck in ein XML-Literal einbetten. Zur Laufzeit erstellt die Anwendung ein LINQ to XML-Objekt für jedes Literal. Dieses beinhaltet die Werte der eingebetteten Ausdrücke. Damit kann dynamischer Inhalt in einem XML-Literal angegeben werden. Weitere Informationen finden Sie unter Eingebettete Ausdrücke in XML.

Weitere Informationen über die Unterschiede zwischen XML-Literalsyntax und XML 1.0-Syntax finden Sie unter XML-Literale und die XML 1.0-Spezifikation.

Einfache Literale

Sie können ein LINQ to XML-Objekt in Visual Basic-Code erstellen, indem Sie gültigen XML-Code eingeben oder einfügen. Ein XML-Elementliteral gibt ein XElement-Objekt zurück. Weitere Informationen finden Sie unter XML-Elementliteral und unter XML-Literale und die XML 1.0-Spezifikation. Im folgenden Beispiel wird ein XML-Element mit mehreren untergeordneten Elementen 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>

Ein XML-Dokument kann erstellt werden, indem einem XML-Literal <?xml version="1.0"?> vorangestellt wird, wie im folgenden Beispiel gezeigt wird. Ein XML-Dokumentliteral gibt ein XDocument-Objekt zurück. Weitere Informationen finden Sie unter XML-Dokumentliteral.

Dim contactDoc As XDocument = _
    <?xml version="1.0"?>
    <contact>
      <name>Patrick Hines</name>
      <phone type="home">206-555-0144</phone>
      <phone type="work">425-555-0145</phone>
    </contact>
Hinweis:

Die XML-Literalsyntax in Visual Basic ist nicht identisch mit der Syntax der XML 1.0-Spezifikation. Weitere Informationen finden Sie unter XML-Literale und die XML 1.0-Spezifikation.

Zeilenfortsetzung

Ein XML-Literal kann mehrere Zeilen umfassen, ohne dass Zeilenfortsetzungszeichen (die Leerzeichen-Unterstrich-EINGABETASTE-Sequenz) verwendet werden. Dies vereinfacht den Vergleich von XML-Literalen im Code mit XML-Dokumenten.

Der Compiler behandelt Zeilenfortsetzungszeichen als Teil eines XML-Literals. Deshalb sollte die Leerzeichen-Unterstrich-EINGABETASTE-Sequenz nur verwendet werden, wenn sie Teil des LINQ to XML-Objekts ist.

Zeilenfortsetzungszeichen werden jedoch benötigt, wenn ein mehrzeiliger Ausdruck in einem eingebetteten Ausdruck vorliegt. Weitere Informationen finden Sie unter Eingebettete Ausdrücke in XML.

Einbetten von Abfragen in XML-Literalen

In einem eingebetteten Ausdruck kann eine Abfrage verwendet werden. In diesem Fall werden die von der Abfrage zurückgegebenen Elemente dem XML-Element hinzugefügt. Damit kann dynamischer Inhalt, wie beispielsweise das Ergebnis der Abfrage eines Benutzers, einem XML-Literal hinzugefügt werden.

Im folgenden Code wird zum Beispiel eine eingebettete Abfrage verwendet, um XML-Elemente aus den Membern des phoneNumbers2-Arrays zu erstellen und diese als untergeordnete Elemente von contact2 hinzuzufügen.

Public Class XmlSamples

  Public Sub Main()
    ' Initialize the objects. 

    Dim phoneNumbers2 As Phone() = { _
        New Phone("home", "206-555-0144"), _
        New Phone("work", "425-555-0145")}

    ' Convert the data contained in phoneNumbers2 to XML. 

    Dim contact2 = _
        <contact>
          <name>Patrick Hines</name>
          <%= From p In phoneNumbers2 _
            Select <phone type=<%= p.Type %>><%= p.Number %></phone> _
          %>
        </contact>

    Console.WriteLine(contact2)
  End Sub

End Class

Class Phone
  Public Type As String
  Public Number As String
  Public Sub New(ByVal t As String, ByVal n As String)
    Type = t
    Number = n
  End Sub
End Class

So erzeugt der Compiler Objekte aus XML-Literalen

Der Visual Basic-Compiler übersetzt XML-Literale in Aufrufe der entsprechenden LINQ to XML-Konstruktoren, um das LINQ to XML-Objekt zu erstellen. Das folgende Codebeispiel wird vom Visual Basic-Compiler beispielsweise in einen Aufruf des XProcessingInstruction-Konstruktors für die XML-Versionsanweisung, in Aufrufe des XElement-Konstruktors für die Elemente <contact>, <name> und <phone> und in Aufrufe des XAttribute-Konstruktors für das type-Attribut übersetzt. Genauer gesagt, ruft der Visual Basic-Compiler für die Attribute des folgenden Beispiels den XAttribute(XName, Object)-Konstruktor zweimal auf. Der erste Aufruf übergibt den Wert type für den name-Parameter und den Wert home für den value-Parameter. Der zweite Aufruf übergibt ebenfalls den Wert type für den name-Parameter, jedoch den Wert work für den value-Parameter.

Dim contactDoc As XDocument = _
    <?xml version="1.0"?>
    <contact>
      <name>Patrick Hines</name>
      <phone type="home">206-555-0144</phone>
      <phone type="work">425-555-0145</phone>
    </contact>

Siehe auch

Konzepte

Eingebettete Ausdrücke in XML

Referenz

XML-Dokumentliteral

XML-Elementliteral

XElement

Weitere Ressourcen

Erstellen von XML in Visual Basic

XML-Literale