C#XML反序列化错误(2,2)

学校给了我一个XML文档,我必须在屏幕上显示信息。 据我所知,Xml反序列化将是最简单/最好的解决方案。

到目前为止我有这个:

public static List ProjectListDeserialize(string path) { XmlSerializer serializer = new XmlSerializer(typeof(List)); Stream filestream = new FileStream(path, FileMode.Open); return (List)serializer.Deserialize(filestream); } public static Projects ProjectsDeserialize(string path) { XmlSerializer serializer = new XmlSerializer(typeof(Projects)); Stream filestream = new FileStream(path, FileMode.Open); return (Projects)serializer.Deserialize(filestream); } 

这就是XML文档的样子:

    Project data key performance indicators WorkInProgress 2011-01-01 2011-08-01    Implementation WaitListed 2011-06-01 2011-08-01    

两种方法都抛出相同的exception:

 <Projects xmlns='http://www.pulse.nl/DynamicsAX/2009/DataSets was not expected 

如何正确反序列化上面的xml? 任何样品都会有所帮助!

尝试在XmlSerializer的构造函数中指定XML文档的默认命名空间 :

 var serializer = new XmlSerializer(typeof(Projects), "http://www.pulse.nl/DynamicsAX/2009/DataSets"); 

相关资源:

  • XmlSerializer构造函数
  • XML命名空间

最有可能的问题是您没有将正确的命名空间指定为Project类的属性。

您可以告诉XmlSerializer在反序列化期间忽略名称空间(请查看此答案 )。

或者,您可以使用XmlTypeAttribute设置适当的命名空间:

 [XmlType(Namespace = "http://www.pulse.nl/DynamicsAX/2009/DataSets")] public class Project { ... }