用于更新/编辑XML数据的C#文本框
本文关键字:文本 数据 XML 更新 编辑 用于 | 更新日期: 2023-09-27 18:00:43
public void EditStudentRecord(string OldStudent, string NewStudent)
{
string strFilename = "Student_" + Tools.IDStudent + ".xml";
if (File.Exists(strFilename))
{
XDocument xml = XDocument.Load(@"Student_" + Tools.IDStudent + ".xml");
var query = from p in xml.Elements(strFilename).Elements("Student Name")
where (string)p.Element("Name") == OldStudent
select p;
foreach (var record in query)
{
record.Element("Name").Value = NewStudent;
}
xml.Save(strFilename);
}
}
上面的代码将通过带有txtName.Text
的组合框选项更新/编辑我的XML文件< Name >
上的数据以更新新名称
当我把Abu Khan这个名字编辑成Khan Han
这是xml数据
<?xml version="1.0" encoding="UTF-8"?>
<Student_1.xml>
<Student Name>
<Name>Abu Khan</Name>
<Address>India</Address>
<Grade>87</Grade>
</Student Name>
</Student_1.xml>
和编辑后的输出xml文件
<?xml version="1.0" encoding="UTF-8"?>
<Student_1.xml>
<Student Name>
<Name>Khan Han</Name>
<Address>India</Address>
<Grade>87</Grade>
</Student Name>
</Student_1.xml>
现在我的问题是如何使用更新XML上的< Address >
和< Grade >
数据2个文本框,txtAddress.Text
表示地址,txtGrade.Text
表示等级
有人能帮我修改上面的代码吗,这样我也可以编辑/更新< address >
和< grade >
这里有一个更简单的方法:
将XML数据表示为对象
public class Student
{
public string Name;
public string Address;
public string Grade;
}
反序列化对象
Student student;
using (TextReader textReader = new StreamReader("pathToXMLFile"))
{
XmlSerializer deserializer = new XmlSerializer(typeof(Student));
student = (Student)deserializer.Deserialize(textReader);
}
将对象绑定到WinForm 上的控件
textBox.DataBindings.Add("Text", student, "Name");
序列化对象以保存更改
using (TextWriter textWriter = new StreamWriter("yourFilePath"))
{
XmlSerializer serializer = new XmlSerializer(typeof(Student));
serializer.Serialize(textWriter, obj);
}