当我尝试反序列化以下XML时,遇到了一些问题:
<?xml version=\"1.0\" encoding=\"utf-8\"?>
<Response xmlns=\"http://Microsoft.LobServices.Sap/2007/03/Rfc/\">
<E_ARR>
<ITEM xmlns=\"http://Microsoft.LobServices.Sap/2007/03/Types/Rfc/\">
<PROPA>00100000</PROPA>
<PROPB>0815</PROPB>
</ITEM>
<ITEM xmlns=\"http://Microsoft.LobServices.Sap/2007/03/Types/Rfc/\">
<PROPA>00100001</PROPA>
<PROPB>0123</PROPB>
</ITEM>
</E_ARR>
</Response>
使用以下代码行:
var reader = new StringReader(XmlShownAbove);
var serializer = new XmlSerializer(typeof(Response));
var instance = (Response)serializer.Deserialize(reader);
以下是两个相关模型:
[XmlRoot("Response", Namespace="http://Microsoft.LobServices.Sap/2007/03/Rfc/")]
public class Response
{
[XmlArray("E_ARR", Namespace="")]
[XmlArrayItem(typeof(ITEM), ElementName = "ITEM", Namespace="http://Microsoft.LobServices.Sap/2007/03/Types/Rfc/")]
public ITEM[] E_ARR{ get; set; }
}
public class ITEM
{
[XmlElement(Namespace = "")]
public string PROPA{ get; set; }
[XmlElement(Namespace = "")]
public string PROPB{ get; set; }
}
不幸的是,这段代码无法正确反序列化E_ARR
数组 - 它始终保持为空,并且我无法弄清楚原因。我猜这应该是很简单的问题,但我只是没能发现它 - 提前感谢!
E_ARR
被反序列化为null
,那么可以合理地假设序列化程序对XML没有问题。 - Charles Mager