Procedura: trasformare XML utilizzando LINQ (Visual Basic)
I valori letterali XML semplificano la lettura di XML da un'origine e la trasformazione in un nuovo formato XML. È possibile sfruttare le query LINQ per recuperare il contenuto da trasformare o modificare il contenuto in un documento esistente in un nuovo formato XML.
L'esempio in questo argomento trasforma il contenuto da un documento di origine XML a HTML da visualizzare in un browser.
Nota
I nomi o i 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 dell'IDE.
Per trasformare un documento XML
In Visual Studio creare un nuovo progetto Visual Basic nel modello di progetto dell'applicazione console.
Fare doppio clic sul file Module1.vb creato nel progetto per modificare il codice Visual Basic. Aggiungere il codice seguente a
Sub Main
del moduloModule1
. 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.
Dopo aver creato 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 usando una query LINQ che restituisce una raccolta di oggetti XElement che contengono il codice HTML trasformato. È possibile utilizzare espressioni incorporate per inserire i valori del documento di origine nel nuovo formato XML.
Il documento HTML risultante viene scritto in un file usando 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
diModule1
, aggiungere un nuovo metodo (Sub
) per trasformare un nodo <Descrizione> nel formato HTML specificato. Questo metodo viene chiamato dal codice nel passaggio precedente e viene usato per mantenere il formato degli elementi <Descrizione>.Questo metodo sostituisce i sottoelementi dell'elemento <Descrizione> con HTML. Il metodo
ReplaceWith
viene utilizzato per mantenere la posizione dei sottoelementi. Il contenuto trasformato dell'elemento <Descrizione> è incluso in un elemento di paragrafo HTML (<p>). La proprietà Nodes viene utilizzata per recuperare il contenuto trasformato dell'elemento <Descrizione>. In questo modo si garantisce che i sottoelementi siano inclusi nel contenuto trasformato.Aggiungere il codice seguente in
Sub Main
dopoModule1
.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
Salva 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>