【发布时间】:2023-04-02 06:08:01
【问题描述】:
下面是代码。我的问题是,如果我想创建此文件,然后稍后使用XmlWriter 重新打开它并向当前文件添加更多内容,该怎么做?喜欢进入并使用XmlWriter编辑这个xml
using System.Xml;
class Program
{
class Employee
{
int _id;
string _firstName;
string _lastName;
int _salary;
public Employee(int id, string firstName, string lastName, int salary)
{
this._id = id;
this._firstName = firstName;
this._lastName = lastName;
this._salary = salary;
}
public int Id { get { return _id; } }
public string FirstName { get { return _firstName; } }
public string LastName { get { return _lastName; } }
public int Salary { get { return _salary; } }
}
static void Main()
{
Employee[] employees = new Employee[4];
employees[0] = new Employee(1, "David", "Smith", 10000);
employees[1] = new Employee(3, "Mark", "Drinkwater", 30000);
employees[2] = new Employee(4, "Norah", "Miller", 20000);
employees[3] = new Employee(12, "Cecil", "Walker", 120000);
using (XmlWriter writer = XmlWriter.Create("employees.xml"))
{
writer.WriteStartDocument();
writer.WriteStartElement("Employees");
foreach (Employee employee in employees)
{
writer.WriteStartElement("Employee");
writer.WriteElementString("ID", employee.Id.ToString());
writer.WriteElementString("FirstName", employee.FirstName);
writer.WriteElementString("LastName", employee.LastName);
writer.WriteElementString("Salary", employee.Salary.ToString());
writer.WriteEndElement();
}
writer.WriteEndElement();
writer.WriteEndDocument();
}
}
}
【问题讨论】:
-
最好的办法是读入文件,将其反序列化给员工,对对象进行更改,然后覆盖文件。这引出了一个问题——你为什么不使用原生 XML 序列化?
-
就像@stuartd 说的:反序列化——改变你的对象——序列化。由于您使用 int 和 string 等默认类型,您可能会查看 XmlSerializer 以(反)序列化您的“员工”。所以你不需要自己做(反)序列化。这可能会帮助您进入:stackoverflow.com/questions/12924221/…