Dela via


Ö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 contact2till .

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>

Se även