C# 列表XML序列化
我创建一个列表,用户在其中创建一个对象,该对象将被添加到列表中C# 列表XML序列化,c#,xml,list,serialization,C#,Xml,List,Serialization,我创建一个列表,用户在其中创建一个对象,该对象将被添加到列表中 private List<Tool> toolList = new List<Tool>(); private void buttonAdd_Click(object sender, RoutedEventArgs e) { InputDialog input = new InputDialog(); input.ShowDialog(); input
private List<Tool> toolList = new List<Tool>();
private void buttonAdd_Click(object sender, RoutedEventArgs e)
{
InputDialog input = new InputDialog();
input.ShowDialog();
inputNewTool = input.enteredTxt;
if (inputNewTool != null)
{
System.Windows.Forms.MessageBox.Show("Chose the Tool's directory");
dlg.DefaultExt = ".exe";
dlg.Filter = "Application (.exe)|*.exe";
if (dlg.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
Tool tool = new Tool();
tool.Name = inputNewTool;
tool.Path = dlg.FileName;
toolList.Add(tool);
comboBoxTools.Items.Add(tool.Name);
}
}
如果用户创建多个对象,则它们将在列表中。我核实过了。应序列化这些对象:
private void Window_Closed(object sender, EventArgs e)
{
foreach (Tool t in toolList)
{
XmlSerializer serializer = new XmlSerializer(t.GetType(), new
XmlRootAttribute("Tools"));
using (var writer = new StreamWriter(@Start.userConfigurePath +
"\\config.xml"))
{
serializer.Serialize(writer.BaseStream, t);
writer.Close();
}
}
}
<?xml version="1.0"?>
<Tool xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Name>zest6</Name>
<Path>C:\Program Files\FreePDF_XP\fpsetup.exe</Path>
</Tool>
无论XML文件列表中有多少对象,都只是最后一个序列化的对象:
private void Window_Closed(object sender, EventArgs e)
{
foreach (Tool t in toolList)
{
XmlSerializer serializer = new XmlSerializer(t.GetType(), new
XmlRootAttribute("Tools"));
using (var writer = new StreamWriter(@Start.userConfigurePath +
"\\config.xml"))
{
serializer.Serialize(writer.BaseStream, t);
writer.Close();
}
}
}
<?xml version="1.0"?>
<Tool xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Name>zest6</Name>
<Path>C:\Program Files\FreePDF_XP\fpsetup.exe</Path>
</Tool>
热情
C:\Program Files\FreePDF\u XP\fpsetup.exe
为什么最后序列化的对象会覆盖其他对象?序列化
工具列表
而不是t
。顺便说一句:没有理由使用writer.BaseStream
,只需使用writer
也可以在你的中看到John Saunders的答案,你在那里写的我猜是这样的:)你是对的。我不知道如何序列化一个完整的列表。有时候,很明显,理解“对不起”