- PR -

XMLをDataSetにしたい

投稿者投稿内容
キョウ
常連さん
会議室デビュー日: 2003/04/30
投稿数: 49
投稿日時: 2003-09-02 11:41
XMLファイルに落としたDataSetを、再度DataSetに復元したいと思っています。

Microsoftのサイトを見て挑戦しているのですが、コンパイルが通りません。
タスクの例 : XML を DataSet に読み込む
http://ja.gotdotnet.com/quickstart/howto/doc/Xml/LoadDataSetXMLData.aspx

どこで引っかかっているかというと、型または名前空間名 'LoadDataSetXMLDataSample' が
見つかりませんでした、となっています。LoadDataSetXMLDataSampleクラスというのはどこに
あるのでしょうか?ヘルプを見ている限りでは、「System.IO」「System.Xml」「System.Data」
のいずれかにあるように見えるのですが、ありません。

環境はVS.NET2003で、言語はC#で、ASP.NETのシステムを構築しています。
ぴで
大ベテラン
会議室デビュー日: 2002/10/10
投稿数: 123
お住まい・勤務地: 東京
投稿日時: 2003-09-02 12:01
引用:
キョウさんの書き込み (2003-09-02 11:41) より:
XMLファイルに落としたDataSetを、再度DataSetに復元したいと思っています。

Microsoftのサイトを見て挑戦しているのですが、コンパイルが通りません。
タスクの例 : XML を DataSet に読み込む
http://ja.gotdotnet.com/quickstart/howto/doc/Xml/LoadDataSetXMLData.aspx


そのページの"ソースの表示"を見てみました?
"public class LoadDataSetXMLDataSample"と定義しています。
見ているサンプルがLoadDataSetXMLDataSampleです。

サンプル通り、StreamReader→ReadXmlSchemaでDataSetに読み込めます。
小野@どっとねっとふぁん
ぬし
会議室デビュー日: 2001/10/30
投稿数: 402
投稿日時: 2003-09-02 12:38
DataSetからWriteXmlメソッドを利用してXMLファイルを生成した場合であれば、
DataSetのReadXmlメソッドを使えばそれで復元できるはず。。。

#DataSetからXMLファイルを作成する時点で独自の形式に変更してるんかな?
キョウ
常連さん
会議室デビュー日: 2003/04/30
投稿数: 49
投稿日時: 2003-09-02 12:46
> ぴで様
> そのページの"ソースの表示"を見てみました?
> "public class LoadDataSetXMLDataSample"と定義しています。
> 見ているサンプルがLoadDataSetXMLDataSampleです。
すごい恥ずかしいです。全くその通りですね。
ヘルプで「LoadDataSetXMLData サンプル」というのがヒットしたので、
思い込んでしまいました。ありがとうございます。

> 小野@EAC
> DataSetからWriteXmlメソッドを利用してXMLファイルを生成した場合であれば、
> DataSetのReadXmlメソッドを使えばそれで復元できるはず。。。
いつもお世話になっております。単にWriteXmlしているだけですので、
やってみます。
キョウ
常連さん
会議室デビュー日: 2003/04/30
投稿数: 49
投稿日時: 2003-09-02 15:00
エラーが発生します。データを全削除した場合は動作しますが、データが少しでも
入っている場合は以下のデータが発生します。

制約を有効にできませんでした。1 つ以上の行に、Null か、一意でないか、
または外部キー制約違反の値が含まれています。

制約はプライマリキー制約のみ使用していますが特にデータでは重複しているようには
見えないのですが。

コード:
DataSet dsHoge.ReadXml("E:\\tmp\\sample.xml");

キョウ
常連さん
会議室デビュー日: 2003/04/30
投稿数: 49
投稿日時: 2003-09-02 15:20
すみません、掲示板用に書き換えたら妙なコードになってしまいました。
実際は型宣言をしたDataSetを使っていて、その型宣言DataSetをXMLに落としていて、
それをもう一度同じ型のDataSetに戻したいと思っています。
書きたかったのは以下の形ですね。
コード:
DataSet dsHoge = new DataSet();
dsHoge.ReadXml("E:\\tmp\\sample.xml");


で、この形だと正常に動作します。

本当はただのDataSetではなく、型宣言したDataSetを代わりにしているのですが、
このままだとエラーがでてしまうわけです。
一度ただのDataSetに落としたものを、型宣言DataSetに入れる方向を模索します。
ありがとうございました。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2003-09-02 16:03
ご自分でコードを書かれたのでしょうか?

新規作成に「データセット」があります。これでxsdファイルを新規作成し、テーブルをサーバエクスプローラからD&Dするとか。

 おそらく、VB.NETでいうところの
Protected Sub New(ByVal info As SerializationInfo, ByVal context As StreamingContext)
コンストラクタを追加すればOKかと。。。

[ メッセージ編集済み 編集者: Jitta 編集日時 2003-09-02 16:04 ]
キョウ
常連さん
会議室デビュー日: 2003/04/30
投稿数: 49
投稿日時: 2003-09-02 20:57
> ご自分でコードを書かれたのでしょうか?
型宣言されたDataSetのコードは自動生成にまかせてあります。

> 新規作成に「データセット」があります。これでxsdファイルを新規作成し、
> テーブルをサーバエクスプローラからD&Dするとか。
この形でデータセットを作りました。
データベース←→型宣言DataSet←→XMLファイル
というやりとりを行いたいのですが、型宣言DataSet←XMLファイルという所が
不調状態であるわけです。

> おそらく、VB.NETでいうところの
> Protected Sub New(ByVal info As SerializationInfo, ByVal context As StreamingContext)
> コンストラクタを追加すればOKかと。。。
ちょっとこれはおっしゃる事が理解できないのですが、xsdファイルを作成した時点で
以下の部分が自動生成されます。この事を仰っているのではないでしょうか?
コード:
protected hoge_xsd(SerializationInfo info, StreamingContext context) {
  string strSchema = ((string)(info.GetValue("XmlSchema", typeof(string))));
  if ((strSchema != null)) {
    DataSet ds = new DataSet();




#Jittaさんの知識とパワーにはいつも頭が下がります。

スキルアップ/キャリアアップ(JOB@IT)