連載:VS 2005でいってみようDBプログラミング

第7回 データソース・コントロールでいってみよう(後編)

山田 祥寛(http://www.wings.msn.to/
2006/08/26
Page1 Page2 Page3 Page4

XMLデータを操作するXmlDataSourceコントロール

 昨今話題のWeb APIやRSSフィードを引き合いに出すまでもなく、いまやネットワーク上で提供されるデータの多くにXMLが利用されています。SQL Server 2005で新たにネイティブXMLデータ型やXQuery(XMLを操作するための問い合わせ言語)が提供されたことからも、XMLは着実に標準的なデータ記述言語としての地位を確立していることが感じられるのではないでしょうか。

 XmlDataSourceコントロールは、XMLデータを操作するためのデータソース・コントロールです。データソース・コントロール編の最後として、ここではこのXmlDataSourceコントロールを利用して、XMLデータを読み込む方法について紹介することにします。

 XmlDataSourceコントロールは、ただ単にXML文書を読み込むだけではなく、XSLT(eXtensible Stylesheet Language Transformations)を使ってフォーマット変換を行ったり、XPath(XML Path Language)を使って部分ツリーをフィルタリングしたりするような操作にも対応しています。

 ここでは、サンプルとして、前回も紹介したObjectDataSource.aspxを、XmlDataSourceコントロールを使って書き換えてみることにします。


図10 XmlDataSourceコントロールを使ったサンプルの実行結果

[1]XMLデータを用意する

 本サンプルを動作させるには、まず元となる以下のようなXMLデータ(books.xml)を用意しておく必要があります。books.xmlのようにアプリケーション内部で利用する情報は、(前述したように)アプリケーション・フォルダである「App_Data」フォルダに配置するべきです。

<?xml version="1.0" encoding="UTF-8"?>
<books>
  <book isbn="4-7980-1270-X" title="Pocket詳解PHP辞典"
    price="2520" publish="秀和システム" publishDate="2006-03-17" />
  <book isbn="4-7981-0371-3" title="独習ASP.NET"
    price="3990" publish="翔泳社" publishDate="2004-04-08" />
  <book isbn="4-7981-0959-2" title="PEAR入門 PHP標準ライブラリを極める!"
    price="2940" publish="翔泳社" publishDate="2005-09-08" />
  <book isbn="4-7981-1070-1" title="XMLデータベース入門"
    price="3780" publish="翔泳社" publishDate="2006-04-12" />
  <book isbn="4-8443-2061-0" title="基礎XML"
    price="2620" publish="インプレス" publishDate="2005-12-20" />
  <book isbn="4-88337-491-2" title="書き込み式 SQLのドリル"
    price="2310" publish="ソシム" publishDate="2006-03-27" />
</books>
リスト3 本サンプルで利用するXMLデータ(books.xml)

 書籍情報がすべて属性として表現されていることがお分かりになるはずです。XMLデータを表形式のデータとして使用する場合、デフォルトでは各属性がテーブルのフィールド(カラム)に対応します*4

*4 元のXML文書がそのような形式になっていない場合、XmlDataSourceコントロールでは読み込み時にXSLTスタイルシートを介してフォーマット変換を行うこともできます。XSLTスタイルシートを介したXML文書の読み込みについては、別稿「.NET TIPS:[ASP.NET]XmlDataSourceコントロールでYahoo!検索ウェブサービスを利用するには?」などを参考にしてください。

[2]「.aspx」ファイルを修正する

 前回作成したObjectDataSource.aspxを開き、GridViewコントロールのタスク・メニューの[データソース選択]から[<新しいデータソース>]を選択してください。

 データ構成ウィザードが開きますので、以下の図11の要領で必要な項目を入力します。これによってデータソース・コントロールが設定/追加されます。




図11 データソース構成ウィザード

 データソースの選択として、ここでは「XMLファイル」を選択します。また、使用するXMLデータは相対パスで「~/App_Data/books.xml」を指定します。変換ファイル(XSLTスタイルシート)、XPath式の欄はブランクのままとします。

[3]イベント・ハンドラを記述する

 これで最低限のXMLデータのバインドは完了です。あとは、出版社を選択するためのプルダウン・メニューでの選択に従って、対象のXMLデータをフィルタリングするためのコードを記述する必要があります。

 DropDownListコントロールをダブルクリックし、自動生成されたイベント・ハンドラに対して以下のようなコードを追記してください。

Protected Sub list_SelectedIndexChanged(ByVal sender As Object, _
  ByVal e As System.EventArgs)

  If list.SelectedValue = "-" Then
    xds.XPath ="/books/book"
  Else
    xds.XPath = String.Format("/books/book[@publish='{0}']", list.SelectedValue)
  End If

End Sub
リスト4 DropDownListコントロール変更時に実行されるイベント・ハンドラ

 XmlDataSourceオブジェクトのXPathプロパティは、読み込んだXMLデータをフィルタリングするためのXPath式を指定します。ここではDropDownListコントロール「list」の選択値(SelectedValueプロパティ)が「-」(未選択)である場合にすべての<book>要素を、それ以外の場合にはpublish属性がDropDownListの選択値に等しい<book>要素のみを取得します。

 以上を理解したら、さっそく、出来上がったWebフォームを起動してみましょう(サンプル・プログラムではXmlDataSource.aspxです)。本節冒頭の図10のように、DropDownListコントロールで指定された出版社の書籍だけが絞り込み表示されれば成功です。

 以上、2回にわたって、ObjectDataSource、AccessDataSource、XmlDataSourceコントロールなど、ASP.NET 2.0で利用可能なデータソース・コントロールについて紹介しました。

 いずれも使いでのあるコントロールばかりですが、特に本格的な業務アプリケーションを構築する場合、ObjectDataSourceコントロールは欠かせないものです。ただ理屈として理解するだけでなく、ぜひ、皆さんもご自分の環境上でこの開発生産性と柔軟性を体感してみてください。End of Article


 INDEX
  Visual Studio 2005でいってみようDBプログラミング
  第7回 データソース・コントロールでいってみよう(後編)
    1.Visual Studioでデータアクセス・コンポーネントを自動生成(1)
    2.Visual Studioでデータアクセス・コンポーネントを自動生成(2)
    3.Microsoft Accessに特化したAccessDataSourceコントロール
  4.XMLデータを操作するXmlDataSourceコントロール
 
インデックス・ページヘ  「Visual Studio 2005でいってみようDBプログラミング」


Insider.NET フォーラム 新着記事
  • 第2回 簡潔なコーディングのために (2017/7/26)
     ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている
  • 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
     Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう
  • 第1回 明瞭なコーディングのために (2017/7/19)
     C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える
  • Presentation Translator (2017/7/18)
     Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Insider.NET 記事ランキング

本日 月間