前提・実現したいこと
DataGridViewの数値をxmlに保存したいです。
DataGridViewの中にチェックボックスを表示したいため出来ればDataSetを使用しない方法で探していますが、チェックボックスの表示が可能であること、データの保存が可能である事の2点を満たせばどんな方法でも構いません。
お恥ずかしながら殆ど知識がなく調べるにもどんな単語で検索すれば良いかも分からない状態なので、もし可能でしたら参考URLなど貼っていただければとても嬉しいです……
該当のソースコード
先ずは此方を使用したのですが、間に繰り返し文を挟めないので任意の文章が入力出来ず。
C#
1//xmlファイルのPATH 2string dir = System.AppDomain.CurrentDomain.BaseDirectory.TrimEnd('\'); 3string updir = dir.Substring(0, dir.LastIndexOf(@"\bin") + 1); 4//保存する 5XElement root = 6new XElement("node", 7new XElement("sample", 8new XElement("checkbox", 1), 9new XElement("date", "2019/07/25"), 10), 11new XElement("sample", 12new XElement("checkbox", 0), 13new XElement("date", "2019/07/25"), 14)); 15FileStream fs = new FileStream(updir + "data.xml", FileMode.Create); 16root.Save(fs); 17fs.Close(); 18fs.Dispose();
現在は此方を使用しているのですが、nodeの中に階層を作る方法が分からず行き詰っています……
C#
1//xmlファイルのPATH 2string dir = System.AppDomain.CurrentDomain.BaseDirectory.TrimEnd('\'); 3string updir = dir.Substring(0, dir.LastIndexOf(@"\bin") + 1); 4 5var doc = new XmlDocument(); 6var sample = doc.CreateElement("sample"); 7doc.AppendChild(sample); 8 9var checkbox = doc.CreateElement("checlbox"); 10submit.InnerText = "1"; 11sample.AppendChild(checlbox); 12 13var date = doc.CreateElement("date"); 14date.InnerText = "2019/07/25"; 15sample.AppendChild(date); 16 17doc.Save(updir + "data.xml");
希望としてはこのような内容のxmlファイルが生成されてくれると嬉しいです。
<?xml version="1.0" encoding="UTF-8"?> <node> <sample> <checkbox>1</checkbox> <date>2019/07/25</date> </sample> <sample> <checkbox>0</checkbox> <date>2019/07/25</date> </sample> </node>
例えば後者のコードを使う場合for文でこういう形で入力しようと考えています。
C#
1for(int i=0; i<dataGridView1.Rows.Count; i++){ 2var checkbox = doc.CreateElement("checlbox"); 3submit.InnerText = dataGridView1.Rows[i].Cells[0].Value; 4sample.AppendChild(checlbox); 5 6var date = doc.CreateElement("date"); 7date.InnerText = dataGridView1.Rows[i].Cells[1].Value; 8sample.AppendChild(date); 9}
何かよい方法をご存知でしたらお力お貸し頂ければ幸いです。
補足情報(FW/ツールのバージョンなど)
作成にはVisualStudioのWindowsフォームアプリケーションを使用しています。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。