方法 : LINQ を使用して XML を変換する (Visual Basic)
XML リテラル (Visual Basic)を使用すると、ソースからの XML の読み込みと新しい XML 形式への変換を容易に実行できます。 LINQ クエリを利用して変換の内容を取得したり、既存のドキュメントの内容を新しい XML 形式に変換したりできます。
このトピックの例では、XML ソース ドキュメントの内容を、ブラウザーに表示される HTML に変換します。
注意
お使いのマシンで、Visual Studio ユーザー インターフェイスの一部の要素の名前や場所が、次の手順とは異なる場合があります。 これらの要素は、使用している Visual Studio のエディションや独自の設定によって決まります。 詳細については、「Visual Studio の設定」を参照してください。
XML ドキュメントを変換するには
Visual Studio で、新しい Visual Basic プロジェクトを [コンソール アプリケーション] プロジェクト テンプレートで作成します。
Visual Basic コードを変更するために、プロジェクト内に作成された Module1.vb ファイルをダブルクリックします。 Module1 モジュールの Sub Main に次のコードを追加します。 このコードは、ソース XML ドキュメントを XDocument オブジェクトとして作成します。
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>
ソース XML ドキュメントを作成するコードの後ろに、オブジェクトからすべての <Book> 要素を取得して HTML ドキュメントに変換する次のコードを追加します。 変換後の HTML を含む XElement オブジェクトのコレクションを返す LINQ クエリを使用して、<Book> 要素の一覧を作成します。 埋め込み式を使用して、ソース ドキュメントの値を新しい XML 形式にできます。
Save メソッドを使用して、結果の HTML ドキュメントをファイルに書き込みます。
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")
Module1 の Sub Main の後ろに、<Description> ノードを指定の HTML 形式に変換する新しいメソッド (Sub) を追加します。 このメソッドは、前の手順のコードによって呼び出され、<Description> 要素の書式を保持するために使用されます。
このメソッドは、<Description> 要素のサブ要素を HTML に置き換えます。 ReplaceWith メソッドは、サブ要素の位置を保持するために使用されます。 <Description> 要素の変換後の内容は、HTML 段落 (<p>) 要素に含まれます。 Nodes プロパティを使用して、<Description> 要素の変換後の内容が取得されます。 これにより、変換後の内容にサブ要素が含まれることが保証されます。
Module1 の Sub Main の後ろに、次のコードを追加します。
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
変更内容を保存します。
F5 キーを押してコードを実行します。 保存されたドキュメントは、次のようになります。
<?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>
参照
処理手順
方法 : ファイル、文字列、またはストリームから XML を読み込む (Visual Basic)