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 { ... }