Partager via


Guide pratique pour transformer du code XML à l’aide de LINQ (Visual Basic)

Les littéraux XML facilitent la lecture du code XML à partir d’une source et la transforment en un nouveau format XML. Vous pouvez tirer parti des requêtes LINQ pour récupérer le contenu à transformer ou modifier du contenu dans un document existant dans un nouveau format XML.

L’exemple de cette rubrique transforme le contenu d’un document source XML en html à afficher dans un navigateur.

Remarque

Votre ordinateur peut afficher différents noms ou emplacements pour certains des éléments de l’interface utilisateur Visual Studio dans les instructions suivantes. L’édition Visual Studio que vous avez et les paramètres que vous utilisez déterminent ces éléments. Pour plus d’informations, consultez Personnaliser l’IDE.

Pour transformer un document XML

  1. Dans Visual Studio, créez un projet Visual Basic dans le modèle de projet Application console .

  2. Double-cliquez sur le fichier Module1.vb créé dans le projet pour modifier le code Visual Basic. Ajoutez le code suivant au Sub Main du module Module1. Ce code crée le document XML source en tant qu’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>
    

    Guide pratique pour charger du code XML à partir d’un fichier, d’une chaîne ou d’un flux.

  3. Après avoir créé le document XML source, ajoutez le code suivant pour récupérer tous les <Book> éléments de l’objet et les transformer en document HTML. La liste des <Book> éléments est créée à l’aide d’une requête LINQ qui retourne une collection d’objets XElement qui contiennent le code HTML transformé. Vous pouvez utiliser des expressions incorporées pour placer les valeurs du document source dans le nouveau format XML.

    Le document HTML obtenu est écrit dans un fichier à l’aide de la Save méthode.

    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. Sub MainAprèsModule1, 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 est utilisée pour conserver le format des <Description> éléments.

    Cette méthode remplace les sous-éléments de l’élément <Description> par du code HTML. La ReplaceWith méthode est utilisée pour conserver l’emplacement des sous-éléments. Le contenu transformé de l’élément <Description> est inclus dans un élément de paragraphe HTML (<p>). La Nodes propriété est utilisée pour récupérer le contenu transformé de l’élément <Description> . Cela garantit que les sous-éléments sont inclus dans le contenu transformé.

    Ajoutez le code suivant après Sub MainModule1.

    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. Enregistrez vos modifications.

  6. Appuyez sur F5 pour exécuter le code. Le document enregistré obtenu 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