Добавление данных в 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");
}
}
}