Teilen über


Gewusst wie: Transformieren von XML unter Verwendung 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 umzuwandelnden Inhalt abzurufen oder den Inhalt eines vorhandenen Dokuments in ein neues XML-Format zu ändern.

Im Beispiel in diesem Artikel wird der Inhalt eines XML-Quelldokuments in HTML umgewandelt, damit er in einem Browser angezeigt werden kann.

Hinweis

Auf Ihrem Computer werden möglicherweise andere Namen oder Speicherorte für die Benutzeroberflächenelemente von Visual Studio angezeigt als die in den folgenden Anweisungen aufgeführten. Diese Elemente sind von der jeweiligen Visual Studio-Version und den verwendeten Einstellungen abhängig. Weitere Informationen finden Sie unter Personalisieren der IDE.

So transformieren Sie ein XML-Dokument

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

  2. Klicken Sie doppelt auf die im Projekt erstellte Datei „Module1.vb“, um den Visual Basic-Code zu ändern. Fügen Sie dem Sub Main des Module1-Moduls den folgenden Code hinzu. 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>
    

    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 sie in ein HTML-Dokument zu transformieren. Die Liste der <Book>-Elemente wird mithilfe einer LINQ-Abfrage erstellt, die eine Sammlung 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) ein, 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 zu erhalten.

    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 Unterelemente im transformierten Inhalt enthalten sind.

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

    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 die Ä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