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
W programie Visual Studio utwórz nowy projekt Visual Basic w szablonie projektu Aplikacja konsolowa.
Kliknij dwukrotnie plik Module1.vb utworzony w projekcie, aby zmodyfikować kod języka Visual Basic. Dodaj następujący kod do
Sub Main
modułuModule1
. 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.
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")
Po
Sub Main
plikuModule1
dodaj 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
plikuModule1
.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
Zapisz zmiany.
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>