● DataSetのWriteXml()メソッドで作成したファイルをXMLコントロールに表示するサンプル

図 DataSetのWriteXml()メソッドで作成したファイルをXMLコントロールに表示するサンプル
このサンプルは、DataSetに格納されている得意先テーブルのデータをWriteXml()メソッドでXMLファイルに出力します。さらに、XMLファイルをXmlDocumentにロードしてASP.NETのXMLコントロールに表示します。XmlDocumentにロードされたXMLデータは、XSLスタイルシートでHTMLタグを埋め込んでからXMLコントロールに表示します。
このサンプルでは、以下のノウハウを習得することができます。
▲ DataSetのWriteXml()メソッドの使い方
▲ DataSetのDataSetNameプロパティの使い方
▲ XMLファイルが存在するか調べる方法
▲ XmlDocumentにXMLファイルをロードする方法
▲ XslTransformにXSLスタイルシートをロードする方法
▲ XML/XSLをトランスフォームする方法
▲ XMLデータをASP.NETのXMLコントロールに表示する方法
サンプルの行38では、ASP.NETのXMLコントロールを定義しています。このコントロールには、Page_Load()イベントでXMLデータを表示します。
38: <asp:XML id="xmlCustomers" runat="server" />
Page_Load()イベントの行11-13では、得意先テーブルから3件のレコードを抽出するSQLを生成しています。行14-17では、OleDbConnection、OleDbDataAdapter、DataSetのインスタンスを生成しています。行18-19では、XMLファイルとXSLスタイルシートのフルパスを保存しています。XMLファイルは、DataSetのWriteXml()メソッドで作成します。XSLスタイルシートは、ASPXファイルが格納されているフォルダに用意されています。
Customers.xslスタイルシートの内容:
<?xml version="1.0" encoding="shift_jis" ?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<table border="1">
<tr style="font-size:10pt; color:blue; font-weight:bold;" align="center">
<td>ID</td>
<td>得意先名</td>
<td>担当者名</td>
</tr>
<xsl:for-each select="Customers/Customer">
<tr style="font-size:10pt; color:black;" align="left">
<td><xsl:value-of select="CustomerID"/></td>
<td><xsl:value-of select="CompanyName"/></td>
<td><xsl:value-of select="ContactName"/></td>
</tr>
</xsl:for-each>
</table>
</xsl:template>
</xsl:stylesheet>
Customers.xslには、得意先テーブルのXMLデータにHTMLタグを挿入するためのスタイルシートが記述されています。詳しい解説は省略しますが、以下のようなHTMLが挿入されます。@CustomerID、@CompanyName、@ContactNameには、XMLデータが代入されます。
<table border=”1”>
<tr style=”font-size:10pt; color:blue; font-weight:bold;” align=”center”>
<td>ID</td>
<td>得意先名</td>
<td>担当者名</td>
</tr>
<tr style=”font-size:10pt; color:black;” align=”left”>
<td>@CustomerID</td>
<td>@CompanyName</td>
<td>@ContactName</td>
</tr>
</table>
行21では、DataSetのDataSetNameプロパティにCustomersを設定しています。行22では、OleDbDataAdapterのFill()メソッドで得意先テーブルからレコードを抽出してDataSetに格納します。行23-25のIf…End Ifでは、Customers.xmlファイルが存在しないときDataSetのWriteXml()メソッドを実行してXMLファイルを作成します。
Customers.xmlファイルの内容:
<?xml version="1.0" ?>
<Customers>
<Customer>
<CustomerID>1</CustomerID>
<CompanyName>喫茶たいむましん</CompanyName>
<ContactName>林 千春</ContactName>
</Customer>
<Customer>
<CustomerID>2</CustomerID>
<CompanyName>小料理なんごく</CompanyName>
<ContactName>河本 なみ</ContactName>
</Customer>
<Customer>
<CustomerID>3</CustomerID>
<CompanyName>割烹ふじい</CompanyName>
<ContactName>山久 良美</ContactName>
</Customer>
</Customers>
XMLファイルには、DataSetに格納されている得意先テーブルがXML形式で出力されます。
10: Sub Page_Load()
11: Dim strSQL As String =
"Select top 3 CustomerID, " & _
12: "CompanyName,
ContactName " & _
13: "From Customers"
14: Dim con As New OleDbConnection( _
15:
ConfigurationSettings.AppSettings("conStringNw"))
16: Dim da As New
OleDbDataAdapter(strSQL, con)
17: Dim ds As New DataSet()
18: Dim strXmlFile As String =
MapPath("Customers.xml")
19: Dim strXslFile As String =
MapPath("Customers.xsl")
20:
21: ds.DataSetName =
"Customers"
22: da.Fill(ds, "Customer")
23: If Not File.Exists(strXmlFile)
Then
24:
ds.WriteXml(strXmlFile)
25: End If
:::
33: End Sub
行27-32では、ASP.NETのXMLコントロールにXMLデータを表示しています。行27-28では、XmlDocumentとXslTransformのインスタンスを生成しています。行29では、XmlDocumentのLoad()メソッドでCustomers.xmlファイルをロードしています。行30では、XslTransformのLoad()メソッドでCustomers.xslスタイルシートをロードしています。行31では、XMLコントロールのDocumentプロパティにXmlDocumentを設定しています。行32では、XMLコントロールのTransformプロパティにXslTransformを設定しています。これで、XMLデータがXSLスタイルシートでトランスフォームされて表示されます。
27:
Dim xmlDoc As XmlDocument = New XmlDocument()
28: Dim xslTrans As XslTransform = New
XslTransform()
29: xmlDoc.Load(strXmlFile)
30: xslTrans.Load(strXslFile)
31: xmlCustomers.Document = xmlDoc
32: xmlCustomers.Transform = xslTrans
Tip
|
WriteXml()メソッドでブラウザに直接送信するには DataSetのWriteXml()メソッドでブラウザに直接XMLデータを送信するには、ResponseのOutputStreamプロパティを使用します。 ds.DataSetName =
"Customers" |