前提
あるソフトを作っていて、今まで書いたコードを見つつ書き上げていたところ、存在確認で例外「ルートが見つかりません」が出てしまいました。
なにかが足りないのか色々調べていますが、もし教えていただけると幸いです。
XMLの出力をしようと思ってますが、何が行けないのか「ルートが見つかりません」で例外を吐いてしまいます。
実現したいこと
- ~~存在確認を正常に動かす。~~XMLを出力する。
発生している問題・エラーメッセージ
C#
1if(File.Exists(FdataA); 2{ 3 _=Datatable.ReadXml(FdataA) 4//System.Xml.XmlException: 'ルート要素が見つかりません。' 5} 6else 7{ 8 Datatable.WriteXml(FdataA); 9 _=Datatable.ReadXml(FdataA); 10}
該当のソースコード
C#
1public static string FdataA = Name.xml 2 3private void ReadingXML(object sender EventArgs e)//Form_Load 4{ 5 ALCDatatable.Columns.Add("Date", typeof(string)); 6 ALCDatatable.Columns.Add("Age", typeof(int)); 7 ALCDatatable.Columns.Add("Name", typeof(string)); 8 Datatable2.TableName = "Tables"; 9 if (File.Exists(FdataA)) 10 { 11 _=ALCDatatable.ReadXml(FdataA); 12 } 13 else 14 { 15 ALCDatatable.WriteXml(FdataA); 16 _=ALCDatatable.ReadXml(FdataA); 17 } 18 19 20 ALCDatatable2.Columns.Add("Date", typeof(string)); 21 ALCDatatable2.Columns.Add("Age", typeof(int)); 22 ALCDatatable2.Columns.Add("Name", typeof(string)); 23 Datatable2.TableName = "Logs"; 24 if (File.Exists(FdataA)) 25 { 26 _=ALCDatatable2.ReadXml(FdataA); 27 } 28 else 29 { 30 ALCDatatable2.WriteXml(FdataA); 31 _=ALCDatatable2.ReadXml(FdataA); 32 } 33}
###追記
stringの名前を[Name]から[Data]に変更したところ、初回起動時にファイルは生成されましたが読み込みはされないようです。
その場合の例外は
「System.InvalidOperationException: 'DataTable をシリアル化できません。DataTable の名前が設定されていません。'」になります。
テーブル名が設定されているのになぜ?詳しく検証してみます。
上記取り消し線は質問内容が変わったため内容を更新しました。
もしかしたらテーブル自体がミスタイプを起こしているかもしれないのでコードの確認をしつつ新たに疑問点があれば追記します。
試したこと
string変更やif文の明確化を行いましたがうまくいきませんでした。
補足情報(FW/ツールのバージョンなど)
ツール:MicrosoftVisualStudio(最新版)
フレームワーク:.NET Framework 4.7.2
回答1件
あなたの回答
tips
プレビュー