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
In Visual Studio, creare un nuovo progetto di Visual Basic. nel modello di progetto Applicazione console.
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).
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")
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
Salvare le modifiche.
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)