Condividi tramite


Procedura: trasformare XML utilizzando LINQ (Visual Basic)

Valori letterali XML (Visual Basic) rende più facile la lettura dell'XML da un'origine e lo trasforma in un nuovo formato XML. È possibile utilizzare le query LINQ per recuperare il contenuto da trasformare, o modificare il contenuto di un documento esistente in un nuovo formato XML.

Nell'esempio in questo argomento viene trasformato il contenuto da un documento di origine XML a HTML, per visualizzarlo in un browser.

Nota

Nomi o percorsi visualizzati per alcuni elementi dell'interfaccia utente di Visual Studio nelle istruzioni seguenti potrebbero essere diversi nel computer in uso. La versione di Visual Studio in uso e le impostazioni configurate determinano questi elementi. Per altre informazioni vedere Personalizzazione delle impostazioni di sviluppo in Visual Studio.

Trasformare un documento XML

  1. In Visual Studio, creare un nuovo progetto di Visual Basic. nel modello di progetto Applicazione console.

  2. Fare doppio clic sul file Module1.vb creato nel progetto per modificare il codice Visual Basic. Aggiungere il seguente codice a Sub Main del modulo Module1. Questo codice crea il documento XML di origine come oggetto XDocument.

    Dim catalog = 
      <?xml version="1.0"?>
        <Catalog>
          <Book id="bk101">
            <Author>Garghentini, Davide</Author>
            <Title>XML Developer's Guide</Title>
            <Price>44.95</Price>
            <Description>
              An in-depth look at creating applications
              with <technology>XML</technology>. For 
              <audience>beginners</audience> or 
              <audience>advanced</audience> developers.
            </Description>
          </Book>
          <Book id="bk331">
            <Author>Spencer, Phil</Author>
            <Title>Developing Applications with Visual Basic .NET</Title>
            <Price>45.95</Price>
            <Description>
              Get the expert insights, practical code samples, 
              and best practices you need 
              to advance your expertise with <technology>Visual 
              Basic .NET</technology>. 
              Learn how to create faster, more reliable applications
              based on professional, 
              pragmatic guidance by today's top <audience>developers</audience>.
            </Description>
          </Book>
        </Catalog>
    

    Procedura: caricare XML da un file, da una stringa o da un flusso (Visual Basic).

  3. Dopo il codice per creare il documento XML di origine, aggiungere il codice seguente per recuperare tutti gli elementi <Book> dall'oggetto e trasformarli in un documento HTML. L'elenco di elementi <Book> viene creato utilizzando una query LINQ che restituisce una raccolta di oggetti XElement che contengono l'HTML trasformato. È possibile utilizzare espressioni incorporate per inserire i valori dal documento di origine nel nuovo formato XML.

    Il documento HTML risultante è scritto in un file utilizzando il metodo Save.

    Dim htmlOutput = 
      <html>
        <body>
          <%= From book In catalog.<Catalog>.<Book> 
              Select <div>
                       <h1><%= book.<Title>.Value %></h1>
                       <h3><%= "By " & book.<Author>.Value %></h3>
                        <h3><%= "Price = " & book.<Price>.Value %></h3>
                        <h2>Description</h2>
                        <%= TransformDescription(book.<Description>(0)) %>
                        <hr/>
                      </div> %>
        </body>
      </html>
    
    htmlOutput.Save("BookDescription.html")
    
  4. Dopo Sub Main di Module1, aggiungere un nuovo metodo (Sub) per trasformare un nodo <Description> nel formato HTML specificato. Questo metodo viene chiamato dal codice nel passaggio precedente e viene utilizzato per mantenere il formato degli elementi <Description>.

    Questo metodo sostituisce i sottoelementi dell'elemento <Description> con HTML. Il metodo ReplaceWith viene utilizzato per mantenere il percorso dei sottoelementi. Il contenuto trasformato dell'elemento <Description> viene incluso in un elemento del paragrafo (<p>) HTML. La proprietà Nodes viene utilizzata per recuperare il contenuto trasformato dell'elemento <Description>. In tal modo viene garantito che i sottoelementi vengano inclusi nel contenuto trasformato.

    Aggiungere il codice riportato di seguito dopo Sub Main di Module1.

    Public Function TransformDescription(ByVal desc As XElement) As XElement
    
      ' Replace <technology> elements with <b>.
      Dim content = (From element In desc...<technology>).ToList()
    
      If content.Count > 0 Then
        For i = 0 To content.Count - 1
          content(i).ReplaceWith(<b><%= content(i).Value %></b>)
        Next
      End If
    
      ' Replace <audience> elements with <i>.
      content = (From element In desc...<audience>).ToList()
    
      If content.Count > 0 Then
        For i = 0 To content.Count - 1
          content(i).ReplaceWith(<i><%= content(i).Value %></i>)
        Next
      End If
    
      ' Return the updated contents of the <Description> element.
      Return <p><%= desc.Nodes %></p>
    End Function
    
  5. Salvare le modifiche.

  6. Premere F5 per eseguire il codice. Il documento salvato risultante sarà simile al seguente:

    <?xml version="1.0"?>
    <html>
      <body>
        <div>
          <h1>XML Developer's Guide</h1>
          <h3>By Garghentini, Davide</h3>
          <h3>Price = 44.95</h3>
          <h2>Description</h2>
          <p>
            An in-depth look at creating applications
            with <b>XML</b>. For 
            <i>beginners</i> or 
            <i>advanced</i> developers.
          </p>
          <hr />
        </div>
        <div>
          <h1>Developing Applications with Visual Basic .NET</h1>
          <h3>By Spencer, Phil</h3>
          <h3>Price = 45.95</h3>
          <h2>Description</h2>
          <p>
            Get the expert insights, practical code 
            samples, and best practices you need 
            to advance your expertise with <b>Visual 
            Basic .NET</b>. Learn how to create faster,
            more reliable applications based on
            professional, pragmatic guidance by today's 
            top <i>developers</i>.
          </p>
          <hr />
        </div>
      </body>
    </html>
    

Vedere anche

Attività

Procedura: caricare XML da un file, da una stringa o da un flusso (Visual Basic)

Concetti

Introduzione a LINQ in Visual Basic

Altre risorse

Valori letterali XML (Visual Basic)

Modifica di XML in Visual Basic

XML in Visual Basic

LINQ in Visual Basic