Udostępnij za pośrednictwem


Porady: przekształcanie XML za pomocą LINQ (Visual Basic)

Literały XML ułatwiają odczytywanie kodu XML z jednego źródła i przekształcanie go w nowy format XML. Możesz skorzystać z zapytań LINQ w celu pobrania zawartości do przekształcenia lub zmiany zawartości w istniejącym dokumencie na nowy format XML.

Przykład w tym temacie przekształca zawartość z dokumentu źródłowego XML na html, który ma być wyświetlany w przeglądarce.

Uwaga

Na komputerze w poniższych instrukcjach mogą być wyświetlane inne nazwy i lokalizacje niektórych elementów interfejsu użytkownika programu Visual Studio. Te elementy są określane przez numer wersji Visual Studio oraz twoje ustawienia. Aby uzyskać więcej informacji, zobacz Personalizowanie środowiska IDE.

Aby przekształcić dokument XML

  1. W programie Visual Studio utwórz nowy projekt Visual Basic w szablonie projektu Aplikacja konsolowa.

  2. Kliknij dwukrotnie plik Module1.vb utworzony w projekcie, aby zmodyfikować kod języka Visual Basic. Dodaj następujący kod do Sub Main modułu Module1 . Ten kod tworzy źródłowy dokument XML jako XDocument obiekt.

    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>
    

    Instrukcje: ładowanie kodu XML z pliku, ciągu lub strumienia.

  3. Po utworzeniu źródłowego dokumentu XML dodaj następujący kod, aby pobrać wszystkie <elementy książki> z obiektu i przekształcić je w dokument HTML. Lista <elementów książki> jest tworzona przy użyciu zapytania LINQ zwracającego kolekcję XElement obiektów zawierających przekształcony kod HTML. Za pomocą wyrażeń osadzonych można umieścić wartości z dokumentu źródłowego w nowym formacie XML.

    Wynikowy dokument HTML jest zapisywany w pliku przy użyciu Save metody .

    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. Po Sub Main pliku Module1dodaj nową metodę (Sub), aby przekształcić <węzeł Opis> w określony format HTML. Ta metoda jest wywoływana przez kod w poprzednim kroku i jest używana do zachowania formatu <elementów Description> .

    Ta metoda zastępuje elementy <podrzędne elementu Description> kodem HTML. Metoda ReplaceWith służy do zachowywania lokalizacji elementów podrzędnych. Przekształcona zawartość <elementu Description> jest zawarta w elemecie akapitu HTML (<p>). Właściwość Nodes służy do pobierania przekształconej zawartości <elementu Description> . Gwarantuje to, że elementy podrzędne zostaną uwzględnione w przekształconej zawartości.

    Dodaj następujący kod po Sub Main pliku 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. Zapisz zmiany.

  6. Naciśnij klawisz F5, aby uruchomić kod. Wynikowy zapisany dokument będzie podobny do następującego:

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

Zobacz też