Freigeben über


Vorgehensweise: Transformieren von XML mithilfe von LINQ (Visual Basic)

XML-Literale erleichtern das Lesen von XML aus einer Quelle und die Transformation in ein neues XML-Format. Sie können LINQ-Abfragen nutzen, um den Inhalt abzurufen, den Sie transformieren möchten, oder Inhalte in einem vorhandenen Dokument in ein neues XML-Format zu ändern.

Im Beispiel in diesem Thema werden Inhalte aus einem XML-Quelldokument in HTML transformiert, die in einem Browser angezeigt werden sollen.

Hinweis

Auf Ihrem Computer werden möglicherweise unterschiedliche Namen oder Speicherorte für einige der Visual Studio-Benutzeroberflächenelemente in den folgenden Anweisungen angezeigt. Die Visual Studio-Edition, über die Sie verfügen, und die Einstellungen, die Sie verwenden, bestimmen diese Elemente. Weitere Informationen finden Sie unter Personalisierung der IDE.

So transformieren Sie ein XML-Dokument

  1. Erstellen Sie in Visual Studio ein neues Visual Basic-Projekt in der Projektvorlage "Konsolenanwendung" .

  2. Doppelklicken Sie auf die im Projekt erstellte Module1.vb Datei, um den Visual Basic-Code zu ändern. Fügen Sie den folgenden Code in die Sub Main des Module1 Moduls ein. Dieser Code erstellt das XML-Quelldokument als XDocument Objekt.

    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>
    

    Vorgehensweise: Laden von XML aus einer Datei, einer Zeichenfolge oder einem Stream.

  3. Fügen Sie nach dem Code zum Erstellen des XML-Quelldokuments den folgenden Code hinzu, um alle <Book> Elemente aus dem Objekt abzurufen und in ein HTML-Dokument zu transformieren. Die Liste der <Book> Elemente wird mithilfe einer LINQ-Abfrage erstellt, die eine Auflistung von XElement Objekten zurückgibt, die den transformierten HTML-Code enthalten. Sie können eingebettete Ausdrücke verwenden, um die Werte aus dem Quelldokument im neuen XML-Format zu platzieren.

    Das resultierende HTML-Dokument wird mithilfe der Save Methode in eine Datei geschrieben.

    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. Fügen Sie nach Sub Main von Module1 eine neue Methode (Sub) hinzu, um einen <Description>-Knoten in das angegebene HTML-Format zu transformieren. Diese Methode wird vom Code im vorherigen Schritt aufgerufen und wird verwendet, um das Format der <Description> Elemente beizubehalten.

    Diese Methode ersetzt Unterelemente des <Description> Elements durch HTML. Die ReplaceWith Methode wird verwendet, um die Position der Unterelemente beizubehalten. Der transformierte Inhalt des <Description> Elements ist in einem HTML-Absatzelement (<p>) enthalten. Die Nodes Eigenschaft wird verwendet, um den transformierten Inhalt des <Description> Elements abzurufen. Dadurch wird sichergestellt, dass Teilelemente im transformierten Inhalt enthalten sind.

    Fügen Sie den folgenden Code nach Sub Main von Module1 hinzu.

    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. Speichern Sie Ihre Änderungen.

  6. Drücken Sie F5, um den Code auszuführen. Das resultierende gespeicherte Dokument sieht wie folgt aus:

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

Siehe auch