Bagikan melalui


Cara: Mengubah XML dengan Menggunakan LINQ (Visual Basic)

Literal XML memudahkan untuk membaca XML dari satu sumber dan mengubahnya menjadi format XML baru. Anda dapat memanfaatkan kueri LINQ untuk mengambil konten untuk diubah, atau mengubah konten dalam dokumen yang sudah ada ke format XML baru.

Contoh dalam topik ini mengubah konten dari dokumen sumber XML ke HTML untuk dilihat di browser.

Nota

Komputer Anda mungkin menampilkan nama atau lokasi yang berbeda untuk beberapa elemen antarmuka pengguna Visual Studio dalam instruksi berikut. Edisi Visual Studio yang Anda miliki dan pengaturan yang Anda gunakan menentukan elemen-elemen ini. Untuk informasi lebih lanjut, lihat Mempersonalisasi IDE.

Untuk mengubah dokumen XML

  1. Di Visual Studio, buat proyek Visual Basic baru di templat proyek Aplikasi Konsol .

  2. Klik dua kali file Module1.vb yang dibuat dalam proyek untuk mengubah kode Visual Basic. Tambahkan kode berikut ke bagian Sub Main dari modul Module1. Kode ini membuat dokumen XML sumber sebagai XDocument objek.

    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>
    

    Cara: Memuat XML dari File, String, atau Stream.

  3. Setelah kode untuk membuat dokumen XML sumber, tambahkan kode berikut untuk mengambil semua <Book> elemen dari objek dan mengubahnya menjadi dokumen HTML. Daftar <Book> elemen dibuat dengan menggunakan kueri LINQ yang mengembalikan kumpulan XElement objek yang berisi HTML yang diubah. Anda bisa menggunakan ekspresi yang disematkan untuk menempatkan nilai dari dokumen sumber dalam format XML baru.

    Dokumen HTML yang dihasilkan ditulis ke file dengan menggunakan Save metode .

    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 MainSetelah Module1 , tambahkan metode baru (Sub) untuk mengubah simpul <Description> ke dalam format HTML yang ditentukan. Metode ini dipanggil oleh kode pada langkah sebelumnya dan digunakan untuk mempertahankan format <Description> elemen.

    Metode ini menggantikan sub-elemen <Description> elemen dengan HTML. Metode ReplaceWith ini digunakan untuk mempertahankan lokasi sub-elemen. Konten dari elemen <Description> yang telah diubah disertakan dalam elemen paragraf HTML (<p>). Properti Nodes digunakan untuk mengambil konten yang diubah dari elemen <Description>. Ini memastikan bahwa sub-elemen disertakan dalam konten yang diubah.

    Tambahkan kode berikut setelah 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. Simpan perubahan Anda.

  6. Tekan F5 untuk menjalankan kode. Dokumen tersimpan yang dihasilkan akan menyerupai berikut ini:

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

Lihat juga