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" />
我有一个带有管理员页面的网站。在此页面上,用户可以创建、更新或删除员工。我想使用 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" />