用于更新/编辑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数据的C#文本框

这里有一个更简单的方法:

将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);
}