Добавление данных в XML файл с несколькими родительскими элементами - C#

Узнай цену своей работы

Формулировка задачи:

Есть xml файл
<?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>
Не получается сделать добавление по категориям private, job, everydae. Добавляется только для private.
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];
Знаю что нужно прописать условия для выбранного comboBox4.SelectedIndex не выходит MyDataSet.Tables[0] присвоить MyDataSet.Tables["название нужной категории"]
Попыталась так результата 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");
        }
    }
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 4.1 из 5