";多个“;使用c#的XML文件(不应替换新输入)
本文关键字:替换 输入 新输入 XML 多个 quot 使用 文件 | 更新日期: 2023-09-27 18:30:03
我正在写一个简短的程序,它显示了我所有的待办事项。我有两个标签。1个选项卡用于创建新的待办事项,另一个选项卡用于显示我选择的每个待办事项的详细信息。因此,我必须将创建的待办事项保存在一个xml文件中。为此,我使用了DataTable
和DataSet
,它运行良好。这是我的代码:
DataTable datatable = new DataTable();
datatable.TableName = "SaveInput";
DataColumn dc1 = new DataColumn("Name");
DataColumn dc2 = new DataColumn("Priority");
DataColumn dc3 = new DataColumn("StartDate");
DataColumn dc4 = new DataColumn("EndDateSoll");
DataColumn dc5 = new DataColumn("EndDateIst");
DataColumn dc6 = new DataColumn("Comment");
datatable.Columns.Add(dc1);
datatable.Columns.Add(dc2);
datatable.Columns.Add(dc3);
datatable.Columns.Add(dc4);
datatable.Columns.Add(dc5);
datatable.Columns.Add(dc6);
datatable.Rows.Add(txt_Name.Text, combox_Priority.Text, txt_Beginn.Text, txt_EndSoll.Text, txt_EndIst.Text, txt_Bemerkungen.Text);
DataSet dataset = new DataSet();
dataset.Tables.Add(datatable);
dataset.DataSetName = "MyProgram";
dataset.WriteXml(@"C:'Users'rs'Desktop'Test'save.xml");
但我现在的问题是:如果我在tab1中创建了一个新的"To Do",它就会替换.xml文件中的新"To To Do"。因此,如果我查看.xml文件,仍然有1个"待办事项"。我只想在.xml文件中写更多的表。所以我的.xml文件看起来像这样:
<MyProgram>
<SaveInput>
<Name>todo1</Name>
<Priority>high</Priority>
<StartDate>today</StartDate>
<EndDateSoll>later</EndDateSoll>
<EndDateIst>not finished</EndDateIst>
<Comment>blabla</Comment>
</SaveInput>
</MyProgram>
但它应该看起来像这样,例如:
<MyProgram>
<SaveInput>
<Name>todo1</Name>
<Priority>high</Priority>
<StartDate>today</StartDate>
<EndDateSoll>later</EndDateSoll>
<EndDateIst>not finished</EndDateIst>
<Comment>blabla</Comment>
<Name>todo2</Name>
<Priority>high</Priority>
<StartDate>yesterday</StartDate>
<EndDateSoll>tomorrow</EndDateSoll>
<EndDateIst>not finished</EndDateIst>
<Comment>testtest</Comment>
</SaveInput>
</MyProgram>
我希望有人能帮助我或给我一个提示,这样我就可以创建多个待办事项。
干杯
编辑:这是一个WinForm应用程序
此代码应该适用于您。
看看
DataSet ds = new DataSet();
if (File.Exists(@"C:'Users'rs'Desktop'Test'save.xml"))
{
ds.ReadXml(@"C:'Users'rs'Desktop'Test'save.xml");
ds.Tables[0].Rows.Add(txt_Name.Text, combox_Priority.Text, txt_Beginn.Text, txt_EndSoll.Text, txt_EndIst.Text, txt_Bemerkungen.Text);
ds.WriteXml(@"C:'Users'rs'Desktop'Test'save.xml");
}
else
{
DataTable datatable = new DataTable();
datatable.TableName = "SaveInput";
DataColumn dc1 = new DataColumn("Name");
DataColumn dc2 = new DataColumn("Priority");
DataColumn dc3 = new DataColumn("StartDate");
DataColumn dc4 = new DataColumn("EndDateSoll");
DataColumn dc5 = new DataColumn("EndDateIst");
DataColumn dc6 = new DataColumn("Comment");
datatable.Columns.Add(dc1);
datatable.Columns.Add(dc2);
datatable.Columns.Add(dc3);
datatable.Columns.Add(dc4);
datatable.Columns.Add(dc5);
datatable.Columns.Add(dc6);
datatable.Rows.Add(txt_Name.Text, combox_Priority.Text, txt_Beginn.Text, txt_EndSoll.Text, txt_EndIst.Text, txt_Bemerkungen.Text);
DataSet dataset = new DataSet();
dataset.Tables.Add(datatable);
dataset.DataSetName = "MyProgram";
dataset.WriteXml(@"C:'Users'rs'Desktop'Test'save.xml");
}
如果我错了,请纠正我,但从你的代码来看,你似乎总是创建一个新的数据集,其中只包含新的值。你会先阅读已经存在的Todos吗?如果没有,您只需始终覆盖xml文件和以前的条目。