【发布时间】:2016-04-12 04:25:10
【问题描述】:
在让我的类正确反序列化时遇到一些问题。
其他反序列化类工作正常,并且在性质上看起来相似,但是当反序列化器运行时,ErrorDetail 和 String 列表的计数均为 0。
我错过了什么/做错了什么?
XML:
<PlaceOrderResponse
xmlns="http://blah.co.uk">
<PlaceOrderResult
xmlns:a="http://blah.co.uk/WebserviceMessage"
xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<a:ErrorDetails
xmlns:b="http://blah.co.uk/Error">
<b:ErrorDetail>
<b:Code>1fasd</b:Code>
<b:Message>Explain</b:Message>
</b:ErrorDetail>
</a:ErrorDetails>
<a:ID i:nil="true"/>
<a:InformationalMessages
xmlns:b="http://schemas.microsoft.com/2003/10/Serialization/Arrays"/>
<a:Status>1</a:Status>
</PlaceOrderResult>
</PlaceOrderResponse>
C# 类:
[Serializable()]
[XmlRoot(ElementName = "PlaceOrderResponse", Namespace = "http://blah.co.uk", IsNullable = false)]
[XmlType(AnonymousType = true, Namespace = "http://blah.co.uk")]
public class PlaceOrderResponse
{
[XmlElement(ElementName = "PlaceOrderResult")]
public PlaceOrderResult placeOrderResult { get; set; }
}
[XmlRoot(ElementName = "PlaceOrderResult")]
public class PlaceOrderResult : WebserviceMessage { }
[XmlRoot(Namespace = "http://blah.co.uk/WebserviceMessage")]
[XmlType(AnonymousType = true)]
public class WebserviceMessage
{
[XmlArray("ErrorDetails")]
[XmlArrayItem("ErrorDetail", typeof(ErrorDetail))]
public ErrorDetails errorDetails { get; set; }
[XmlElement("ID")]
public string ID { get; set; }
[XmlArray("InformationMessages")]
[XmlArrayItem(typeof(String))]
public List<String> InformationMessages { get; set; }
[XmlElement("Status")]
public string Status { get; set; }
}
[XmlRoot(ElementName = "ErrorDetails")]
[XmlTypeAttribute(AnonymousType = true)]
public class ErrorDetails : List<ErrorDetail> { }
[XmlRoot(ElementName = "ErrorDetail", Namespace = "http://blah.co.uk/Error")]
[XmlTypeAttribute(AnonymousType = true)]
public class ErrorDetail
{
[XmlElement(ElementName = "Code")]
public string Code { get; set; }
[XmlElement(ElementName = "Message")]
public string Message { get; set; }
}
【问题讨论】:
标签: c# xml serialization deserialization