Comment : transformer du code XML à l'aide de LINQ (Visual Basic)
Les Littéraux XML (Visual Basic) facilitent la lecture du texte XML à partir d'une source donnée et sa transformation dans un nouveau format XML. Vous pouvez tirer parti de requêtes LINQ pour récupérer le contenu à transformer, ou modifier le contenu dans un document existant pour lui donner un nouveau format XML.
L'exemple de cette rubrique transforme le contenu d'un document source XML en HTML à afficher dans un navigateur.
Notes
Il est possible que votre ordinateur affiche des noms ou des emplacements différents pour certains des éléments d'interface utilisateur de Visual Studio dans les instructions suivantes. L'édition de Visual Studio dont vous disposez et les paramètres que vous utilisez déterminent ces éléments. Pour plus d'informations, consultez Paramètres Visual Studio.
Pour transformer un document XML
Dans Visual Studio, créez un projet Visual Basic dans le modèle de projet Application console.
Double-cliquez sur le fichier Module1.vb créé dans le projet, pour modifier le code Visual Basic. Ajoutez le code suivant à la section Sub Main du module Module1. Ce code crée le document XML source sous forme d'objet 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>
Comment : charger du code XML à partir d'un fichier, d'une chaîne ou d'un flux (Visual Basic).
Après le code permettant de créer le document XML source, ajoutez le code suivant, pour récupérer tous les éléments <Book> de l'objet et les transformer en un document HTML. La liste d'éléments <Book> se crée en utilisant une requête LINQ qui renvoie une collection d'objets XElement contenant le HTML transformé. Vous pouvez utiliser des expressions incorporées pour mettre les valeurs du document source dans le nouveau format XML.
Le document HTML résultant est écrit dans un fichier en utilisant la méthode 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")
Après la section Sub Main du Module1, ajoutez une nouvelle méthode (Sub) pour transformer un nœud <Description> en format HTML spécifié. Cette méthode est appelée par le code de l'étape précédente et s'utilise pour préserver le format des éléments <Description>.
Cette méthode remplace les sous-éléments de l'élément <Description> par le format HTML. La méthode ReplaceWith s'utilise pour préserver l'emplacement des sous-éléments. Le contenu transformé de l'élément <Description> est inclus dans un élément (<p>) du paragraphe HTML. La propriété Nodes permet de récupérer le contenu transformé de l'élément <Description>. Cela garantit l'intégration des sous-éléments au contenu transformé.
Ajoutez le code suivant, après la section Sub Main du 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
Enregistrez les modifications apportées.
Appuyez sur F5 pour exécuter le code. Le document enregistré qui résulte de cette opération ressemble à ce qui suit :
<?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>
Voir aussi
Tâches
Comment : charger du code XML à partir d'un fichier, d'une chaîne ou d'un flux (Visual Basic)
Concepts
Introduction à LINQ dans Visual Basic