Gewusst wie: Umwandeln von XML unter Verwendung von LINQ (Visual Basic)
Mit XML-Literale (Visual Basic) kann XML leicht aus einer Quelle gelesen und in ein neues XML-Format umgewandelt werden.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 dieses Themas wird der Inhalt eines XML-Quelldokuments in HTML umgewandelt, um ihn in einem Browser anzuzeigen.
Hinweis |
---|
Ihr Computer zeigt möglicherweise für einige der Elemente der Visual Studio-Benutzeroberfläche in der folgenden Anleitung andere Namen oder Standorte an. Diese Elemente sind von der jeweiligen Visual Studio-Version und den verwendeten Einstellungen abhängig. Weitere Informationen finden Sie unter Visual Studio-Einstellungen. |
So wandeln Sie ein XML-Dokument um
Erstellen Sie in Visual Studio ein neues Visual Basic-Projekt mit der Projektvorlage Konsolenanwendung.
Doppelklicken Sie auf die im Projekt erzeugte Datei Module1.vb, um den Visual Basic-Code anzupassen.Fügen Sie Sub Main des Module1-Moduls folgenden Code hinzu.Mit diesem Code wird das XML-Quelldokument als XDocument-Objekt erzeugt.
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>
Gewusst wie: Laden von XML aus einer Datei, einer Zeichenfolge oder einem Stream (Visual Basic).
Fügen Sie nach dem Code zur Erzeugung des XML-Quelldokuments den folgenden Code hinzu, mit dem alle <Book>-Elemente des Objekts abgerufen und in ein HTML-Dokument umgewandelt werden.Die Liste mit <Book>-Elementen wird mit einer LINQ-Abfrage erzeugt. Sie gibt eine Auflistung von XElement-Objekten zurück, die das umgewandelte HTML enthalten.Mithilfe eingebetteter Ausdrücke können die Werte des Quelldokuments in das neue XML-Format übertragen werden.
Das erzeugte HTML-Dokument wird mit 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")
Fügen Sie nach Sub Main von Module1 eine neue Methode (Sub) hinzu, um einen <Description>-Knoten in das angegebene HTML-Format umzuwandeln.Diese Methode wird vom Code des vorherigen Schritts 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 zu erhalten.Der umgewandelte Inhalt des <Description>-Elements wird in ein HTML-Absatzelement (<p>) eingeschlossen.Die Nodes-Eigenschaft wird verwendet, um den umgewandelten Inhalt des <Description>-Elements abzurufen.Damit wird sichergestellt, dass Unterelemente im umgewandelten Inhalt enthalten sind.
Fügen Sie nach Sub Main von Module1 den folgenden Code 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
Speichern Sie die Änderungen.
Drücken Sie F5, um den Code auszuführen.Das erzeugte und abgespeicherte Dokument sieht etwa folgendermaßen 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
Aufgaben
Gewusst wie: Laden von XML aus einer Datei, einer Zeichenfolge oder einem Stream (Visual Basic)
Konzepte
Einführung in LINQ in Visual Basic