Ü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>