Megosztás a következőn keresztül:


Útmutató: XML átalakítása LINQ használatával (Visual Basic)

Az XML-literálok megkönnyítik az XML olvasását egy forrásból, és átalakítják egy új XML-formátumra. A LINQ-lekérdezések segítségével lekérheti a tartalmat az átalakításhoz, vagy egy meglévő dokumentum tartalmát új XML-formátumra módosíthatja.

A jelen témakörben szereplő példa egy XML-forrásdokumentum tartalmát HTML-fájllá alakítja, hogy megtekintse a böngészőben.

Feljegyzés

Előfordulhat, hogy a számítógép különböző neveket vagy helyeket jelenít meg a Visual Studio felhasználói felületének egyes elemeihez az alábbi utasításokban. Ezeket az elemeket a Visual Studio-kiadás és a használt beállítások határozzák meg. További információ: Az IDE személyre szabása.

XML-dokumentum átalakítása

  1. A Visual Studióban hozzon létre egy új Visual Basic-projektet a konzolalkalmazás projektsablonjában.

  2. Kattintson duplán a projektben létrehozott Module1.vb fájlra a Visual Basic-kód módosításához. Adja hozzá a következő kódot a Sub MainModule1 modulhoz. Ez a kód objektumként hozza létre a forrás XML-dokumentumot 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>
    

    Útmutató: XML betöltése fájlból, sztringből vagy streamből.

  3. A forrás XML-dokumentum létrehozásához használt kód után adja hozzá a következő kódot az objektum összes könyvelemének <> lekéréséhez és HTML-dokumentummá alakításához. A Könyvelemek> listája <linq-lekérdezéssel jön létre, amely az átalakított HTML-t tartalmazó objektumgyűjteményt XElement adja vissza. Beágyazott kifejezések használatával a forrásdokumentum értékeit az új XML-formátumban helyezheti el.

    Az eredményként kapott HTML-dokumentumot a rendszer a Save metódus használatával egy fájlba írja.

    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. Ezután Sub Main adjon hozzá egy új metódust (Sub) egy <leírási> csomópont megadott HTML-formátumba való átalakításáhozModule1. Ezt a metódust az előző lépésben szereplő kód hívja meg, és a Leírás> elemek formátumának <megőrzésére szolgál.

    Ez a metódus a Leírás> elem alelemeit <HTML-re cseréli. A ReplaceWith metódus az alelemek helyének megőrzésére szolgál. A Leírás> elem átalakított tartalma <egy HTML-bekezdés (<p>) elem részét képezi. A Nodes tulajdonság a Leírás> elem átalakított tartalmának lekérésére <szolgál. Ez biztosítja, hogy az alelemek bekerülnek az átalakított tartalomba.

    Adja hozzá a következő kódot a következő utánSub Main.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. Mentse a módosításokat.

  6. Nyomja le az F5 billentyűt a kód futtatásához. Az eredményül kapott mentett dokumentum a következőhöz fog hasonlítni:

    <?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>
    

Lásd még