将 XML 反序列化为 C# Windows 窗体
本文关键字:Windows 窗体 XML 反序列化 | 更新日期: 2023-09-27 18:32:44
我有一个通过我的 Windows 表单创建的 XML 文件,用于保存两个文本字段和 2 个日期时间选择器。
我想知道如何将其"加载"(最好是询问用户文件在哪里)将其重新加载到我的表单中,以便可以对其进行编辑并再次保存。
public class Values
{
public string task1_name { get; set;}
public string task1_desc { get; set;}
public DateTime task1_date { get; set;}
public DateTime task1_time { get; set;}
}
我的表单上的"保存"按钮
void SavebuttonClick(object sender, EventArgs e)
{
DialogResult dialogResult = MessageBox.Show("Are you sure you want to save?",
"Save", MessageBoxButtons.YesNo);
if (dialogResult == DialogResult.Yes)
{
Values v = new Values();
v.task1_name = this.task1_name.Text;
v.task1_desc = this.task1_desc.Text;
v.task1_date = this.task1_date.Value;
v.task1_time = this.task1_time.Value;
SaveValues(v);
}
}
第三部分
public void SaveValues(Values v)
{
XmlSerializer serializer = new XmlSerializer(typeof(Values));
using (TextWriter textWriter = new StreamWriter(@"E:'TheFile.xml"))
{
serializer.Serialize(textWriter, v);
}
}
你可以这样做:
public void SomeMethod()
{
Values v = LoadValues();
this.task1_name.Text = v.task1_name;
this.task1_desc.Text = v.task1_desc;
this.task1_date.Value = v.task1_date;
this.task1_time.Value = v.task1_time;
}
public Values LoadValues()
{
XmlSerializer serializer = new XmlSerializer(typeof(Values));
using (TextReader textReader = new StreamReader(@"E:'TheFile.xml"))
{
return (Values)serializer.Deserialize(textReader);
}
}
我建议将序列化程序放在一个变量中,这样就不会每次都创建它(构造新的 XmlSerializer 很昂贵)
希望对你有帮助
您可以将 xml 反序列化为一个对象,并使用该对象重新加载字段。
为此,首先使用 xsd.exe.为该 xml 创建 xsd。然后,您可以使用相同的 exe 创建类文件,并使用 XmlSerializer 将 xml 反序列化为该对象。
您可以解析 xml 并使用解析的数据更新表单。Visual Studio 中有一个文件选取器对话框,供用户选择文件。
XmlTextReader reader = new XmlTextReader ("books.xml");
while (reader.Read())
{
// code
}