Добавление данных в XML файл с несколькими родительскими элементами - C#
Формулировка задачи:
Есть xml файл
Не получается сделать добавление по категориям private, job, everydae. Добавляется только для private.
Знаю что нужно прописать условия для выбранного comboBox4.SelectedIndex не выходит MyDataSet.Tables[0] присвоить MyDataSet.Tables["название нужной категории"]
<?xml version="1.0" encoding="windows-1251" standalone="yes"?> <NewDataSet> <private> <id>1</id> <category>Личное</category> <text>turtuty</text> <data>7 декабря 2015 г.</data> <importance>Важно</importance> <state>Не выполняется</state> </private> <private> <id>2</id> <category>Личное</category> <text>yyyyyyyyyyyyyyyyyy</text> <data>7 декабря 2015 г.</data> <importance>Важно</importance> <state>Не выполняется</state> </private> <private> <id>3</id> <category>Личное</category> <text>yyyyyyyyyyyyyyiiiiiiiiiiiiiiiiiiiiiiiii</text> <data>7 декабря 2015 г.</data> <importance>Не важно</importance> <state>В процессе</state> </private> <everyday> <id>4</id> <category>Повседневное</category> <text>turtuty</text> <data>7 декабря 2015 г.</data> <importance>Важно</importance> <state>Не выполняется</state> </everyday> <job> <id>5</id> <category>Работа</category> <text>turtuty</text> <data>7 декабря 2015 г.</data> <importance>Важно</importance> <state>Не выполняется</state> </job> </NewDataSet>
DataRow[] datarows = null; string s = string.Empty; try { datarows = MyDatatable.Select("id=max(id)"); s = datarows[0]["id"].ToString(); } catch (Exception) { } if (s == "" || s == string.Empty) { s = "0"; } int i = int.Parse(s) + 1; DataRow datarow = MyDataSet.Tables[0].NewRow(); datarow[0] = Convert.ToString(i); datarow[1] = comboBox4.Text.Trim(); datarow[2] = textBox1.Text.Trim(); datarow[3] = dateTimePicker1.Text.Trim(); datarow[4] = comboBox1.Text.Trim(); datarow[5] = comboBox2.Text.Trim(); MyDataSet.Tables[0].Rows.Add(datarow); xmldoc = new XmlDocument(); xmldoc.InnerXml = MyDataSet.GetXml(); XmlDeclaration xmldeclaration = xmldoc.CreateXmlDeclaration("1.0", "windows-1251", "yes"); xmldoc.InsertBefore(xmldeclaration, xmldoc.DocumentElement); xmldoc.Save(sCurDir + @"\XMLFile1.xml"); MyDataSet = new DataSet(); MyDataSet.ReadXml(sCurDir + @"\XMLFile1.xml", XmlReadMode.Auto); MyDatatable = MyDataSet.Tables[0];
Попыталась так результата 0
void job (int i) { MyDatatable = MyDataSet.Tables["job"]; DataRow datarow = MyDataSet.Tables["job"].NewRow(); datarow[0] = Convert.ToString(i); datarow[1] = comboBox4.Text.Trim(); datarow[2] = textBox1.Text.Trim(); datarow[3] = dateTimePicker1.Text.Trim(); datarow[4] = comboBox1.Text.Trim(); datarow[5] = comboBox2.Text.Trim(); MyDataSet.Tables["job"].Rows.Add(datarow); } void everyday (int i) { MyDatatable = MyDataSet.Tables["everyday"]; DataRow datarow = MyDataSet.Tables["everyday"].NewRow(); datarow[0] = Convert.ToString(i); datarow[1] = comboBox4.Text.Trim(); datarow[2] = textBox1.Text.Trim(); datarow[3] = dateTimePicker1.Text.Trim(); datarow[4] = comboBox1.Text.Trim(); datarow[5] = comboBox2.Text.Trim(); MyDataSet.Tables["everyday"].Rows.Add(datarow); } void privat (int i) { MyDatatable = MyDataSet.Tables["private"]; DataRow datarow = MyDataSet.Tables["private"].NewRow(); datarow[0] = Convert.ToString(i); datarow[1] = comboBox4.Text.Trim(); datarow[2] = textBox1.Text.Trim(); datarow[3] = dateTimePicker1.Text.Trim(); datarow[4] = comboBox1.Text.Trim(); datarow[5] = comboBox2.Text.Trim(); MyDataSet.Tables["private"].Rows.Add(datarow); } private void button1_Click(object sender, EventArgs e) { DataRow[] datarows = null; string s = string.Empty; try { datarows = MyDatatable.Select("id=max(id)"); s = datarows[0]["id"].ToString(); } catch (Exception) { } if (s == "" || s == string.Empty) { s = "0"; } int i = int.Parse(s) + 1; if (comboBox4.SelectedIndex == 0) { job(i); } if (comboBox4.SelectedIndex == 2) { everyday(i); } if (comboBox4.SelectedIndex == 1) { privat(i); } xmldoc = new XmlDocument(); xmldoc.InnerXml = MyDataSet.GetXml(); XmlDeclaration xmldeclaration = xmldoc.CreateXmlDeclaration("1.0", "windows-1251", "yes"); xmldoc.InsertBefore(xmldeclaration, xmldoc.DocumentElement); xmldoc.Save(sCurDir + @"\XMLFile1.xml"); MyDataSet = new DataSet(); MyDataSet.ReadXml(sCurDir + @"\XMLFile1.xml", XmlReadMode.Auto); MyDatatable = MyDataSet.Tables[0];
Исправила все работает ВСЕМ спасибо за помощь
MyDatatable = MyDataSet.Tables[1]; DataRow datarow = MyDataSet.Tables[1].NewRow(); datarow[0] = Convert.ToString(i); datarow[1] = comboBox4.Text.Trim(); datarow[2] = textBox1.Text.Trim(); datarow[3] = dateTimePicker1.Text.Trim(); datarow[4] = comboBox1.Text.Trim(); datarow[5] = comboBox2.Text.Trim(); MyDataSet.Tables[1].Rows.Add(datarow);
Решение задачи: «Добавление данных в XML файл с несколькими родительскими элементами»
textual
Листинг программы
namespace ConsoleApplication8 { class Program { static void Main(string[] args) { var news = NewsType.Create("database.xml"); } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д