Cenni preliminari sui valori letterali XML (Visual Basic)

Un valore letterale XML consente di incorporare XML direttamente nel codice Visual Basic. La sintassi dei valori letterali XML rappresenta gli oggetti LINQ to XML ed è simile alla sintassi XML 1.0. In questo modo è più semplice creare elementi e documenti XML a livello di codice perché il codice ha la stessa struttura del codice XML finale.

Visual Basic compila valori letterali XML in oggetti LINQ to XML. LINQ to XML fornisce un modello a oggetti semplice per la creazione e la modifica di XML e questo modello si integra bene con LINQ (Language-Integrated Query). Per ulteriori informazioni, vedere XElement.

È possibile incorporare un'espressione Visual Basic in un valore letterale XML. In fase di esecuzione, l'applicazione crea un oggetto LINQ to XML per ogni valore letterale, incorporando i valori delle espressioni incorporate. In questo modo è possibile specificare contenuto dinamico all'interno di un valore letterale XML. Per altre informazioni, vedere Espressioni incorporate in XML.

Per altre informazioni sulle differenze tra la sintassi dei valori letterali XML e la sintassi XML 1.0, vedere Valori letterali XML e specifica XML 1.0.

Valori letterali semplici

È possibile creare un oggetto LINQ to XML nel codice Visual Basic digitando o incollando in XML valido. Un valore letterale dell'elemento XML restituisce un oggetto XElement. Per altre informazioni, vedere Valore letterale elemento XML e Valori letterali XML e specifica XML 1.0. Nell'esempio seguente viene creato un elemento XML con diversi elementi figlio.

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

È possibile creare un documento XML avviando un valore letterale XML con <?xml version="1.0"?>, come illustrato nell'esempio seguente. Un valore letterale dell'elemento XML restituisce un oggetto XDocument. Per altre informazioni, vedere Creazione di valori letterali XML.

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>

Nota

La sintassi dei valori letterali XML in Visual Basic non è identica alla sintassi nella specifica XML 1.0. Per altre informazioni, vedere Valori letterali XML e specifica XML 1.0.

Continuazione di riga

Un valore letterale XML può estendersi su più righe senza usare caratteri di continuazione riga (sequenza di caratteri di sottolineatura spaziatura). In questo modo è più semplice confrontare i valori letterali XML nel codice con i documenti XML.

Il compilatore considera i caratteri di continuazione di riga come parte di un valore letterale XML. Pertanto, è consigliabile utilizzare la sequenza di immissione di caratteri di sottolineatura spaziatrice solo quando appartiene all'oggetto LINQ to XML.

Tuttavia, se si dispone di un'espressione multilinea in un'espressione incorporata, sono necessari caratteri di continuazione di riga. Per altre informazioni, vedere Espressioni incorporate in XML.

Incorporamento di query in valori letterali XML

È possibile usare una query in un'espressione incorporata. Quando si esegue questa operazione, gli elementi restituiti dalla query vengono aggiunti all'elemento XML. In questo modo è possibile aggiungere contenuto dinamico, ad esempio il risultato della query di un utente, a un valore letterale XML.

Ad esempio, il codice seguente usa una query incorporata per creare elementi XML dai membri della matrice phoneNumbers2 e quindi aggiunge tali elementi come elementi figlio di contact2.

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

Come il compilatore crea oggetti da valori letterali XML

Il compilatore Visual Basic converte i valori letterali XML in chiamate ai costruttori LINQ to XML equivalenti per compilare l'oggetto LINQ to XML. Ad esempio, il compilatore Visual Basic trasla l'esempio di codice seguente in una chiamata al costruttore XProcessingInstruction per l'istruzione della versione XML, chiama il costruttore XElement per gli elementi <contact>, <name> e <phone> e chiama il costruttore XAttribute per l'attributo type. In particolare, dati gli attributi nell'esempio seguente, il compilatore Visual Basic chiamerà il costruttore XAttribute(XName, Object) due volte. Il primo passerà il valore type per il parametro name e il valore home per il parametro value. Il secondo passerà anche il valore type per il parametro name, ma il valore work per il parametro 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>

Vedi anche