Aracılığıyla paylaş


Nasıl yapılır: LINQ Kullanarak XML Dönüştürme (Visual Basic)

XML Değişmez Değerleri , XML'i bir kaynaktan okumayı ve yeni bir XML biçimine dönüştürmeyi kolaylaştırır. Dönüştürülecek içeriği almak veya var olan bir belgedeki içeriği yeni bir XML biçimine değiştirmek için LINQ sorgularından yararlanabilirsiniz.

Bu konudaki örnek, bir XML kaynak belgesindeki içeriği tarayıcıda görüntülenecek HTML'ye dönüştürür.

Uyarı

Bilgisayarınız, aşağıdaki yönergelerde bazı Visual Studio kullanıcı arabirimi öğeleri için farklı adlar veya konumlar gösterebilir. Sahip olduğunuz Visual Studio sürümü ve kullandığınız ayarlar bu öğeleri belirler. Daha fazla bilgi için bkz. IDE'yi Kişiselleştirme.

XML belgesini dönüştürmek için

  1. Visual Studio'da Konsol Uygulaması proje şablonunda yeni bir Visual Basic projesi oluşturun.

  2. Visual Basic kodunu değiştirmek için projede oluşturulan Module1.vb dosyasına çift tıklayın. Aşağıdaki kodu Sub MainModule1 modülüne ekleyin. Bu kod, kaynak XML belgesini bir XDocument nesne olarak oluşturur.

    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>
    

    Nasıl yapılır: Dosyadan, Dizeden veya Akıştan XML Yükleme.

  3. Kaynak XML belgesini oluşturmak için koddan sonra aşağıdaki kodu ekleyerek nesneden tüm <Book> öğeleri alın ve bir HTML belgesine dönüştürün. Öğe listesi <Book> , dönüştürülen HTML'yi içeren bir nesne koleksiyonu XElement döndüren bir LINQ sorgusu kullanılarak oluşturulur. Ekli ifadeleri kullanarak kaynak belgedeki değerleri yeni XML biçiminde yerleştirebilirsiniz.

    HTML belgesi, Save yöntemi kullanılarak bir dosyaya yazılır.

    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 Main Module1 sayısından sonra, bir <Description> düğümünü belirtilen HTML biçimine dönüştürmek için yeni bir Sub metot ekleyin. Bu yöntem, önceki adımda kod tarafından çağrılır ve öğelerin biçimini <Description> korumak için kullanılır.

    Bu yöntem, öğesinin <Description> alt öğelerini HTML ile değiştirir. ReplaceWith yöntemi, alt öğelerin konumunu korumak için kullanılır. öğesinin <Description> dönüştürülmüş içeriği bir HTML paragrafı (<p>) öğesine eklenir. Nodes özelliği, <Description> öğesinin dönüştürülmüş içeriğini getirmek için kullanılır. Bu, dönüştürülen içeriğe alt öğelerin eklenmesini sağlar.

    Sub Main sonrasına Module1 için aşağıdaki kodu ekleyin.

    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. Değişikliklerinizi kaydedin.

  6. Kodu çalıştırmak için F5 tuşuna basın. Sonuçta kaydedilen belge aşağıdakine benzer:

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

Ayrıca bakınız