Översikt över XML-literaler (Visual Basic)
Med en XML-literal kan du införliva XML direkt i Visual Basic-koden. XML-literalsyntaxen representerar LINQ till XML-objekt och liknar XML 1.0-syntaxen. Det gör det enklare att skapa XML-element och -dokument programmatiskt eftersom koden har samma struktur som den slutliga XML-koden.
Visual Basic kompilerar XML-literaler till LINQ till XML-objekt. LINQ till XML tillhandahåller en enkel objektmodell för att skapa och manipulera XML, och den här modellen integreras väl med Language-Integrated Query (LINQ). Mer information finns i XElement.
Du kan bädda in ett Visual Basic-uttryck i en XML-literal. Vid körning skapar ditt program ett LINQ-till XML-objekt för varje literal, med värdena för de inbäddade uttrycken. På så sätt kan du ange dynamiskt innehåll i en XML-literal. Mer information finns i Inbäddade uttryck i XML.
Mer information om skillnaderna mellan XML-literalsyntaxen och XML 1.0-syntaxen finns i XML-literaler och XML 1.0-specifikationen.
Enkla literaler
Du kan skapa ett LINQ-till XML-objekt i Visual Basic-koden genom att skriva eller klistra in giltig XML. En XML-elementliteral returnerar ett XElement objekt. Mer information finns i XML-elementliterala och XML-literaler och XML 1.0-specifikationen. I följande exempel skapas ett XML-element som har flera underordnade element.
Dim contact1 As XElement =
<contact>
<name>Patrick Hines</name>
<phone type="home">206-555-0144</phone>
<phone type="work">425-555-0145</phone>
</contact>
Du kan skapa ett XML-dokument genom att starta en XML-literal med <?xml version="1.0"?>
, som du ser i följande exempel. En XML-dokumentliteral returnerar ett XDocument objekt. Mer information finns i XML-dokumentlitteral.
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>
Kommentar
XML-literalsyntaxen i Visual Basic är inte identisk med syntaxen i XML 1.0-specifikationen. Mer information finns i XML-literaler och XML 1.0-specifikationen.
Radfortsättning
En XML-literal kan sträcka sig över flera rader utan att använda radfortsättningstecken (sekvensen space-underscore-enter). Det gör det enklare att jämföra XML-literaler i kod med XML-dokument.
Kompilatorn behandlar radfortsättningstecken som en del av en XML-literal. Därför bör du endast använda sekvensen space-underscore-enter när den hör hemma i LINQ till XML-objektet.
Du behöver dock radfortsättningstecken om du har ett flerradsuttryck i ett inbäddat uttryck. Mer information finns i Inbäddade uttryck i XML.
Bädda in frågor i XML-literaler
Du kan använda en fråga i ett inbäddat uttryck. När du gör det läggs de element som returneras av frågan till i XML-elementet. På så sätt kan du lägga till dynamiskt innehåll, till exempel resultatet av en användares fråga, till en XML-literal.
Följande kod använder till exempel en inbäddad fråga för att skapa XML-element från medlemmarna i matrisen phoneNumbers2
och sedan lägga till dessa element som underordnade contact2
till .
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
Så här skapar kompilatorn objekt från XML-literaler
Visual Basic-kompilatorn översätter XML-literaler till anrop till motsvarande LINQ till XML-konstruktorer för att bygga upp LINQ till XML-objektet. Visual Basic-kompilatorn översätter till exempel följande kodexempel till ett anrop till XProcessingInstruction konstruktorn för XML-versionsinstruktionen XElement , anropar konstruktorn för elementen <contact>
, <name>
och <phone>
anropar XAttribute konstruktorn för type
attributet. Med tanke på attributen i följande exempel anropar XAttribute(XName, Object) Visual Basic-kompilatorn konstruktorn två gånger. Den första skickar värdet type
för parametern name
och värdet home
för parametern value
. Den andra skickar också värdet type
för parametern name
, men värdet work
för parametern value
.
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>