Übersicht zu XML-Literalen (Visual Basic)

Ein XML-Literal ermöglicht es Ihnen, XML direkt in Ihren Visual Basic-Code einzubinden. Die Syntax für XML-Literale stellt LINQ to XML-Objekte dar und ist der XML 1.0-Syntax sehr ähnlich. Dies erleichtert die programmgesteuerte Erstellung von XML-Elementen und -Dokumenten, da der Code dieselbe Struktur aufweist wie der endgültige XML-Code.

Visual Basic kompiliert XML-Literale in LINQ to XML-Objekte. LINQ to XML bietet ein einfaches Objektmodell für das Erstellen und Bearbeiten von XML, und dieses Modell kann gut in LINQ (Language-Integrated Query) integriert werden. Weitere Informationen finden Sie unter XElement.

Sie können einen Visual Basic-Ausdruck in ein XML-Literal einbetten. Zur Laufzeit erstellt Ihre Anwendung für jedes Literal ein LINQ to XML-Objekt, das die Werte der eingebetteten Ausdrücke enthält. Dadurch können Sie dynamische Inhalte in einem XML-Literal angeben. Weitere Informationen finden Sie unter Eingebettete Ausdrücke in XML (Visual Basic).

Weitere Informationen zu den Unterschieden zwischen der Syntax für XML-Literale und der Syntax von XML 1.0 finden Sie unter XML-Literale und die XML 1.0-Spezifikation.

Einfache Literale

Sie können ein LINQ to XML-Objekt in Ihrem 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 XML-Literale und XML 1.0-Spezifikation. Im folgenden Beispiel wird ein XML-Element erstellt, das über mehrere untergeordnete Elemente verfügt.

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

Sie können ein XML-Dokument erstellen, indem Sie ein XML-Literal mit <?xml version="1.0"?> starten, wie im folgenden Beispiel gezeigt. 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 Syntax für XML-Literale in Visual Basic ist nicht mit der Syntax in der XML 1.0-Spezifikation identisch. Weitere Informationen finden Sie unter XML-Literale und XML 1.0-Spezifikation.

Zeilenfortsetzung

Ein XML-Literal kann sich über mehrere Zeilen erstrecken, ohne dass Zeilenfortsetzungszeichen verwendet werden (die Sequenz „Leerzeichen-Unterstrich-Eingabe“). Dies erleichtert den Vergleich von XML-Literalen im Code mit XML-Dokumenten.

Der Compiler behandelt Zeilenfortsetzungszeichen als Teil eines XML-Literals. Daher sollten Sie die Sequenz „Leerzeichen-Unterstrich-Eingabe“ nur verwenden, wenn sie dem LINQ to XML-Objekt angehört.

Sie benötigen jedoch Zeilenfortsetzungszeichen, wenn ein mehrzeiliger Ausdruck in einem eingebetteten Ausdruck vorliegt. Weitere Informationen finden Sie unter Eingebettete Ausdrücke in XML (Visual Basic).

Einbetten von Abfragen in XML-Literale

Sie können eine Abfrage in einem eingebetteten Ausdruck verwenden. In diesem Fall werden die von der Abfrage zurückgegebenen Elemente dem XML-Element hinzugefügt. Auf diese Weise können Sie einem XML-Literal dynamische Inhalte hinzufügen, z. B. das Ergebnis einer Benutzerabfrage.

Der folgende Code verwendet z. B. eine eingebettete Abfrage, um XML-Elemente aus den Membern des Arrays phoneNumbers2 zu erstellen und diese Elemente dann 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 erstellt 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. Der Visual Basic-Compiler übersetzt beispielsweise das folgende Codebeispiel in einen Aufruf des XProcessingInstruction-Konstruktors für die XML-Versionsanweisung, in Aufrufe des XElement-Konstruktors für die <contact>-, <name>- und <phone>-Elemente sowie in Aufrufe des XAttribute-Konstruktors für das type-Attribut. Für die angegebenen Attribute im folgenden Beispiel ruft der Visual Basic-Compiler den XAttribute(XName, Object)-Konstruktor zweimal auf. Im ersten Aufruf wird der Wert type für den Parameter name und der Wert home für den Parameter value übergeben. Im zweiten Aufruf wird ebenfalls der Wert type für den Parameter name, aber der Wert work für den Parameter value übergeben.

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>

Weitere Informationen