xml 文件使用 XmlSerializer 时出错

Error in xml file using the XmlSerializer

我有一个带有管理员页面的网站。在此页面上,用户可以创建、更新或删除员工。我想使用 C# 的 XmlSerializer 将这些员工保存在 xml 文件中。

员工 class 看起来像这样:

public class Employee
{
    public int id { get; set; }
    public String lastname { get; set; }
    public String firstname { get; set; }
    public String enterdate { get; set; }
    public int salarylevel { get; set; }
}

但是,我在读取 xml 文件时遇到错误,不知道该怎么做:

In System.InvalidOperationException is an exception of type "System.Xml.dll" occurred, but this was not in the user code processed.

Additional information: error in XML document (0,0).

翻译自德语。

我将项目创建为一个空的 WebAPI,并且我有一个如下所示的 EmployeeController:

public class EmployeeController : ApiController
{
    List<Employee> employeelist = new List<Employee>();

    [HttpGet]
    public IEnumerable<Employee> getEmployees()
    {
        XmlSerializer serializer = new XmlSerializer(typeof(List<Employee>));
        FileStream stream = new FileStream(System.Web.Hosting.HostingEnvironment.ApplicationPhysicalPath + "employees.xml", FileMode.Open);
        employeelist = (List<Employee>)serializer.Deserialize(stream);

        return employeelist;
    }
}

错误发生在:employeelist = (List<Employee>)serializer.Deserialize(stream);

使用 JQuery 调用控制器,使用 url http://localhost:5267/api/employee/ 调用 getJSON 方法。所有员工都应保存在名为 employees.xml 的 xml 文件中,该文件目前仅包含一行:

<?xml version="1.0" encoding="utf-8" ?>

我预期会发生的是,我得到一个空列表,因为文件中没有相关的 xml 元素,因此页面不显示任何员工。

我想我搞砸了,因为我手动创建了 xml 文件,没有序列化程序,或者序列化程序无法处理一行 xml。有人知道我应该如何解决这个问题吗?

使用 Serialize 创建 xml 并不是成功序列化所必需的,但对于确定您的 xml 是否符合预期很有用。序列化的空集合应该更像:

<?xml version="1.0" encoding="utf-8"?>
<ArrayOfEmployee xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" />