我正在尝试使用xmlSerializer.Deserialize()从其XML字符串反序列化对象,但返回的对象始终为空(不为null,但所有属性都为null或0)。我无法弄清楚我做错了什么,但我没有错误或例外。
string xml = "***my xml is here***";
XmlSerializer ser = new XmlSerializer(typeof(Order));
StringReader stringReader = new StringReader(xml);
XmlTextReader xmlReader = new XmlTextReader(stringReader);
Order order = (Order)ser.Deserialize(xmlReader);
xmlReader.Close();
stringReader.Close();
Order.cs的源代码是使用xsd.exe工具从XSD生成的。
order.cs的来源:http://www.nickgilbert.com/etc/1/Order.txt
答案 0 :(得分:2)
您的示例XML文件(example-order.xml)使用名称空间http://tempuri.org/OrderSchema.xsd
,但XSD(order.cs)生成的代码定义了名称空间http://x-rm.com/wrightcottrell/cataloguecd/
中的所有元素。
您需要这些命名空间才能匹配,以便序列化正常工作。
答案 1 :(得分:1)
你得到一个对象的所有的事实告诉我该对象是公共的并且有一个公共无参数构造函数(否则会抛出异常)。所以,它最有可能失败了:
get
和公开set
的公共媒体资源,或公共(非只读)字段