Cenni preliminari su LINQ to XML in Visual Basic

Visual Basic fornisce supporto per LINQ to XML tramite valori letterali XML e proprietà dell'asse XML. In questo modo è possibile usare una sintassi familiare e pratica per l'uso di XML nel codice Visual Basic. I valori letterali XML consentono di includere l'XML direttamente nel codice. Le proprietà dell'asse XML consentono di accedere a nodi figlio, nodi discendenti e attributi di un valore letterale XML. Per altre informazioni, vedere Panoramica dei valori letterali XML e Accesso a XML in Visual Basic.

LINQ to XML è un'API di programmazione XML in memoria progettata in modo specifico per sfruttare i vantaggi di LINQ (Language-Integrated Query). Sebbene sia possibile chiamare direttamente le API LINQ, solo Visual Basic consente di dichiarare valori letterali XML e accedere direttamente alle proprietà dell'asse XML.

Nota

I valori letterali XML e le proprietà dell'asse XML non sono supportati nel codice dichiarativo in una pagina ASP.NET. Per usare le funzionalità XML di Visual Basic, inserire il codice in una pagina code-behind nell'applicazione ASP.NET.

Play button Per le dimostrazioni video correlate, vedere Configurazione iniziale di LINQ to XML e Come creare fogli di calcolo Excel usando LINQ to XML.

Creazione di XML

Esistono due modi per creare alberi XML in Visual Basic. È possibile dichiarare un valore letterale XML direttamente nel codice oppure usare le API LINQ per creare l'albero. Entrambi i processi consentono al codice di riflettere la struttura finale dell'albero XML. L'esempio di codice seguente, ad esempio, crea un elemento XML:

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

Per altre informazioni, vedere Creazione di XML in Visual Basic.

Accesso e esplorazione di XML

Visual Basic fornisce proprietà dell'asse XML per l'accesso e l'esplorazione delle strutture XML. Queste proprietà consentono di accedere a elementi e attributi XML specificando i nomi degli elementi figlio XML. In alternativa, è possibile chiamare in modo esplicito i metodi LINQ per lo spostamento e l'individuazione di elementi e attributi. Nell'esempio di codice seguente vengono utilizzate proprietà dell'asse XML per fare riferimento agli attributi e agli elementi figlio di un elemento XML. Nell'esempio di codice viene usata una query LINQ per recuperare gli elementi figlio e restituirli come elementi XML, eseguendo in modo efficace una trasformazione.

' Place Imports statements at the top of your program.
Imports <xmlns:ns="http://SomeNamespace">

Module Sample1

    Sub SampleTransform()

        ' Create test by using a global XML namespace prefix.

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

        Dim phoneTypes =
          <phoneTypes>
              <%= From phone In contact.<ns:phone>
                  Select <type><%= phone.@ns:type %></type>
              %>
          </phoneTypes>

        Console.WriteLine(phoneTypes)
    End Sub

End Module

Per altre informazioni, vedere Accesso a XML in Visual Basic.

Spazi dei nomi XML

Visual Basic consente di specificare un alias per uno spazio dei nomi XML globale tramite l'istruzione Imports. Nell'esempio seguente viene illustrato come usare l'istruzione Imports per importare uno spazio dei nomi XML:

Imports <xmlns:ns="http://someNamespace">

È possibile usare un alias dello spazio dei nomi XML quando si accede alle proprietà dell'asse XML e si dichiarano valori letterali XML per documenti ed elementi XML.

È possibile recuperare un oggetto XNamespace per un prefisso dello spazio dei nomi specifico usando l'operatore GetXmlNamespace.

Per altre informazioni, vedere Istruzione Imports (spazio dei nomi XML).

Uso di spazi dei nomi XML nei valori letterali XML

Nell'esempio seguente viene illustrato come creare un oggetto XElement che usa lo spazio dei nomi globale ns:

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

Console.WriteLine(contact1)

Il compilatore Visual Basic converte i valori letterali XML contenenti alias dello spazio dei nomi XML in codice equivalente che utilizza la notazione XML per l'uso degli spazi dei nomi XML, con l'attributo xmlns. Durante la compilazione, il codice nell'esempio della sezione precedente produce essenzialmente lo stesso codice eseguibile dell'esempio seguente:

Dim contact2 As XElement = 
    <ns1:contact xmlns:ns1="http://someNamespace">
        <ns1:name>Patrick Hines</ns1:name>
        <ns1:phone type="home">206-555-0144</ns1:phone>
        <ns1:phone type="work">425-555-0145</ns1:phone>
    </ns1:contact>

Console.WriteLine(contact2)

Utilizzo di spazi dei nomi XML nelle proprietà dell'asse XML

Gli spazi dei nomi XML dichiarati nei valori letterali XML non sono disponibili per l'uso nelle proprietà dell'asse XML. Tuttavia, gli spazi dei nomi globali possono essere usati con le proprietà dell'asse XML. Utilizzare due punti per separare il prefisso dello spazio dei nomi XML dal nome dell'elemento locale. Di seguito è illustrato un esempio:

Console.WriteLine("Contact name is: " & contact1.<ns:name>.Value)

Vedi anche