C# XMLSerializer-如何反序列化

C# XMLSerializer-如何反序列化,c#,xml,C#,Xml,如何将其反序列化: <c:replyMessage xmlns:c="urn:schemas-cybersource-com:transaction-data-1.118"> <c:merchantReferenceCode>cmAction12345</c:merchantReferenceCode> <c:requestID>3473543574375349573452</c:requestID> &l

如何将其反序列化:

<c:replyMessage
xmlns:c="urn:schemas-cybersource-com:transaction-data-1.118">
     <c:merchantReferenceCode>cmAction12345</c:merchantReferenceCode>
     <c:requestID>3473543574375349573452</c:requestID>
     <c:caseManagementActionReply> 
         <c:reasonCode>100</c:reasonCode>
     </c:caseManagementActionReply> 
</c:replyMessage>
型号:

[XmlRoot("c:caseManagementActionReply")] 
public class CCaseManagementActionReply
{
    public string ReasonCode { get; set; }
}

[XmlRoot("c:replyMessage")] 
public class CReplyMessage
{
    [XmlElement(ElementName = "c:merchantReferenceCode")]
    public string MerchantReferenceCode { get; set; }

    [XmlElement(ElementName = "c:requestID")]
    public string RequestID { get; set; }

    [XmlElement(ElementName = "c:caseManagementActionReply")]
    public CCaseManagementActionReply CaseManagementActionReply { get; set; }
}

您对不同的属性使用相同的元素名称。只是一个复制/粘贴错误,我想:

[XmlElement(ElementName = "c:merchantReferenceCode")]
public string MerchantReferenceCode { get; set; }

[XmlElement(ElementName = "c:merchantReferenceCode")]
public string Decision { get; set; }
更新:

您应该在XmlRoot属性中指定名称空间。我测试了以下类,它成功地序列化了示例XML:

[XmlRoot("replyMessage", Namespace= "urn:schemas-cybersource-com:transaction-data-1.118")]
public class CReplyMessage
{
    [XmlElement(ElementName = "merchantReferenceCode")]
    public string MerchantReferenceCode { get; set; }

    [XmlElement(ElementName = "requestID")]
    public string RequestID { get; set; }

    [XmlElement(ElementName = "caseManagementActionReply")]
    public CCaseManagementActionReply CaseManagementActionReply { get; set; }
}

public class CCaseManagementActionReply
{
    [XmlElement(ElementName = "reasonCode")]
    public string ReasonCode { get; set; }
}

谢谢,我删除了这个决定,因为我甚至不需要它,主要错误是ReplyMessage不起作用
[XmlElement(ElementName = "c:merchantReferenceCode")]
public string MerchantReferenceCode { get; set; }

[XmlElement(ElementName = "c:merchantReferenceCode")]
public string Decision { get; set; }
[XmlRoot("replyMessage", Namespace= "urn:schemas-cybersource-com:transaction-data-1.118")]
public class CReplyMessage
{
    [XmlElement(ElementName = "merchantReferenceCode")]
    public string MerchantReferenceCode { get; set; }

    [XmlElement(ElementName = "requestID")]
    public string RequestID { get; set; }

    [XmlElement(ElementName = "caseManagementActionReply")]
    public CCaseManagementActionReply CaseManagementActionReply { get; set; }
}

public class CCaseManagementActionReply
{
    [XmlElement(ElementName = "reasonCode")]
    public string ReasonCode { get; set; }
}