- - PR -
DataSet.GetXml() でXML型データの表示
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2006-07-29 22:52
いつもお世話になっております。
ADO.NET2.0とSQLServer2005を使っており、 DBではテーブルの列にXML型を利用しております。 そのテーブルをDataSetへ読込んで、 GetXml()メソッドや、WriteXml()メソッドを使うと、 タグの<>もEntity変換され、全て < > になってしまいます。 なんとかそのまま使いたいのですが、何か良い方法はあるでしょうか。 以下がサンプルコードです。 [TABLE] use tempdb create table T1 ( x xml) insert into T1 values ( '<A />') [CODE-C#] DataSet ds = new DataSet(); string conString = "Data Source=.;Initial Catalog=tempdb;Integrated security=SSPI" string sqlString = "select * from T1"; SqlDataAdapter da = new SqlDataAdapter(sqlString, conString); da.Fill( ds); Console.WriteLine( ds.GetXml()); [Result] <A /> [Expect] <A /> 代案として、DataSetを継承したクラスを作成しようかと想ってますが、 できれば普通に使いたいと想ってます。 どなたか、何かヒント等ありましたら、是非ご教授頂ければ幸いです。 どうぞ宜しくお願い致します。 [ メッセージ編集済み 編集者: さいた 編集日時 2006-07-29 22:53 ] [ メッセージ編集済み 編集者: さいた 編集日時 2006-07-29 22:54 ] [ メッセージ編集済み 編集者: さいた 編集日時 2006-07-29 22:55 ] [ メッセージ編集済み 編集者: さいた 編集日時 2006-07-29 22:59 ] |
|
投稿日時: 2006-07-30 03:05
XMLの要素値や属性値に"<"や">"は使用できません。XMLの仕様です。
要素値や属性値に"<"や">"を使用したい場合は < >みたいな 実体参照に置き換えられます。 なので、出力されたXMLを見ると"<"や">"が< >に置き換えら れています。 XMLを読み込む(解析する)際に<や>の実体参照は元々の文字 ("<"や">")に置き換えられるので、読み込んだ後のプログラムでは ちゃんと"<"や">"と認識できるはずです。 XMLの実体参照等についてはXML&SOA辺り基礎コーナーを読めば載って いると思います。 |
|
投稿日時: 2006-08-02 00:10
がんふぃーるどさん、レスをありがとうございます。
えと、、要素のテキストや属性地に < や > を使いたいというのではなく、 "<A />"というデータをDBのテーブルに入れておりまして、 それをDataSetのGetXmlメソッドを使ってXML文書(の文字列)に変換した時に、 < や >になってしまう、という事なのです。 わざわざGetXmlを使わずとも既にXMLだから「?」と想われるかもしれませんが、 実際は他の列と合わせて、DataSetからの一連のXML文書を作成したいと考えております。 例えば、このテーブルのXML列名がXColとすると、 <NewDataSet> <Table> <AnyCol>AAAAA</AnyCol> <XCol><A /></XCol> </Table> <Table> : </NewDataSet> という様に、列の値を子要素として利用したいのでした。 すみません、少々サンプルを端折り過ぎたかもしれません。 しかし、ここからは半分自己レスになってしまいますが、 DataSetに保持しているXML型列のDataColumnのTypeが、 System.Stringになっているので、 変換されてしまうのはしょうがない様な気がしてきてます。 なので、面倒がらずにDataSetの拡張クラスを作り、 オーバーロードしようかと考えてます。 お騒がせ致しました、色々ありがとうございましたm(__)m |
|
投稿日時: 2006-08-02 01:17
HttpUtility.HtmlDecode()メソッドで変換できます。
|
|
投稿日時: 2006-08-02 01:37
うにくまさん、ありがとうございます。
型をとってそれをdomで、、、等と悶々と考えておりましたが、 成るほどっ、なんともシンプルに戻す事ができました! ありがとうございましたm(__)m |
1