- 題名: XMLの逆シリアルかについて
- 日時: 2008/07/18 22:53:47
- ID: 22466
- この記事の返信元:
- (なし)
- この記事への返信:
- [22467] Re[1]: XMLの逆シリアルかについて2008/07/18 23:59:50
- ツリーを表示
すみません…何を書けばいいのかわかりませんでした。 //XMLファイルに保存するオブジェクトのためのクラス public class Data { public decimal YEAR1; public decimal MONTH1; public decimal DAY1; public string HOUR1; public string MINUTE1; public decimal YEAR2; public decimal MONTH2; public decimal DAY2; public string HOUR2; public string MINUTE2; public string ACT; public string PLACE; public string MEMO; } public Insert() { InitializeComponent(); } private void Insert_Load(object sender, EventArgs e) { } /*追加ボタンを押したとき*/ private void button1_Click(object sender, EventArgs e) { //保存先のファイル名 string fileName = @"C:\data\" + year1.Value + "_" + month1.Value + "_" + day1.Value + ".xml"; //保存するクラス(SampleClass)のインスタンスを作成 Data d = new Data(); d.YEAR1 = year1.Value; d.MONTH1 = month1.Value; d.DAY1 = day1.Value; d.HOUR1 = hour1.Text; d.MINUTE1 = minute1.Text; d.YEAR2 = year2.Value; d.MONTH2 = month2.Value; d.DAY2 = day2.Value; d.HOUR2 = hour2.Text; d.MINUTE2 = minute2.Text; d.ACT = Act.Text; d.PLACE = place.Text; d.MEMO = memo.Text; //XmlSerializerオブジェクトを作成 //書き込むオブジェクトの型を指定する System.Xml.Serialization.XmlSerializer serializer =new System.Xml.Serialization.XmlSerializer(typeof(Data)); //ファイルを開く System.IO.FileStream fs = new System.IO.FileStream(fileName, System.IO.FileMode.Create); //シリアル化し、XMLファイルに保存する serializer.Serialize(fs, d); //閉じる fs.Close(); } という風にシリアルかしています。 今が実験環境にいないためコンパイルできないので、エラーメッセージがかけません…すみません… ただ、(2,2)という風になっていたのを覚えています。
またなのですが、よろしくお願いします。 複数のデータを格納してデータを表示させようとしました。 public class Data { public decimal YEAR1; public decimal MONTH1; public decimal DAY1; public string HOUR1; public string MINUTE1; public decimal YEAR2; public decimal MONTH2; public decimal DAY2; public string HOUR2; public string MINUTE2; public string ACT; public string PLACE; public string MEMO; public Data() { } public Data(decimal YEAR1, decimal MONTH1, decimal DAY1, string HOUR1, string MINUTE1, decimal YEAR2, decimal MONTH2, decimal DAY2, string HOUR2, string MINUTE2, string ACT, string PLACE, string MEMO) { this.YEAR1 = YEAR1; this.MONTH1 = MONTH1; this.DAY1 = DAY1; this.HOUR1 = HOUR1; this.MINUTE1 = MINUTE1; this.YEAR2 = YEAR2; this.MONTH2 = MONTH2; this.DAY2 = DAY2; this.ACT = ACT; this.PLACE = PLACE; this.MEMO = MEMO; } } に格納していて、 listBox1.Items.Clear(); Data[] data = new Data[10]; //保存元のファイル名 string fileName = @"C:\data\" + year + "_" + month + "_" + day + ".xml"; System.IO.FileInfo fInfo = new System.IO.FileInfo(fileName); if (fInfo.Exists) { //保存した内容を復元する System.Xml.Serialization.XmlSerializer serializer = new System.Xml.Serialization.XmlSerializer(typeof(Data[])); System.IO.FileStream fs = new System.IO.FileStream(fileName,System.IO.FileMode.Open); data = (Data[])serializer.Deserialize(fs);//←ここでエラー //復元した内容を表示する foreach(Data file in data) { listBox1.Items.Add(file.HOUR1 + ":" + file.MINUTE1 + "〜" + file.HOUR2 + ":" + file.MINUTE2 + " " + file.ACT); } fs.Close(); } else { listBox1.Items.Add("norhing..."); } で表示させようとしました。 InvaildOperationExceptionはハンドルされませんでした。XML ドキュメント (2,2) でエラーが発生しました。 とデバッグに引っかかります。 データ挿入時には、 //XMLファイルに保存するオブジェクトのためのクラス public class Schedule { public Data Data; public Schedule() { } public Schedule(Data Data) { this.Data = Data; } } というクラスも使っています。 またなのですが、わかりません… よろしくお願いします。
分類:[.NET]