【发布时间】:2020-08-21 10:58:43
【问题描述】:
目前我正在使用此代码创建 XML 文件
{
XmlSerializer sr = new XmlSerializer(obj.GetType());
TextWriter writer = new StreamWriter(filename);
sr.Serialize(writer, obj);
writer.Close();
}
问题是它总是覆盖我之前输入的条目。如何创建多个条目并保存它们(可能在 Combobox/DropDownList 中?)。
这是我的代码的其余部分 (btnSave btnLoad)
{
try
{
Daten daten = new Daten();
daten.GAME = txtGame.Text;
daten.PLATFORM = txtPlatform.Text;
daten.RELEASED = txtReleased.Text;
SaveData.SaveDaten(daten, "gameregister.xml");
}
catch (Exception exception)
{
MessageBox.Show(exception.Message);
}
}
private void btnLoad_Click(object sender, EventArgs e)
{
if (File.Exists("gameregister.xml"))
{
XmlSerializer xs = new XmlSerializer(typeof(Daten));
FileStream read = new FileStream("gameregister.xml", FileMode.Open, FileAccess.Read, FileShare.Read);
Daten daten = (Daten)xs.Deserialize(read);
txtGame.Text = daten.GAME;
txtPlatform.Text = daten.PLATFORM;
txtReleased.Text = daten.RELEASED;
read.Close();
}
}
ps:我必须使用 XML 来完成这个特定的任务。
【问题讨论】:
-
这是否意味着,您想在一个 xml 文件中保存多个
Daten实例?您知道,XML 需要有一个唯一的根元素,因此您不能只是将另一个根元素附加到同一个文件中。这意味着:您需要有一个Daten的“集合”,您可以将其添加到其中,您可以从中删除、编辑……然后总是 全部保存或不保存。毕竟这是一个文本文件。 -
是的,
Daten是我的公开课(包括GAME, PLATFORM, RELEASED)@Fildor 你对 Collection 的理解是什么?我之前使用文本文件完成了所有这些,但现在他们告诉我使用 XML 文件来完成。感谢您的回复! -
BTW:观察到行为的原因:“路径参数可以是文件名,包括通用命名约定 (UNC) 共享上的文件。如果文件存在,它会被覆盖; 否则,会创建一个新文件。” - StreamWriter(string)(我强调)
-
太好了,如果您的模型由
Daten表示,那么您需要例如List<Daten>,您将在xml 中写入和读取。然后,您可以浏览该列表、添加、删除、编辑条目。 -
如何编写该代码?
标签: c# xml visual-studio xml-serialization