使用XmlSerializer并设置根类名称

时间:2013-08-09 19:10:16

标签: c# xml xml-parsing .net-4.5

尝试使用XmlSerializer来很好地反序列化我从webservice获得的东西。

这是我的班级声明:

[Serializable]
    public class CarrierLookupResponse
    {
        [XmlElement(ElementName = "ResponseDO")]
        public ResponseDo ResponseDo { get; set; }
    }

以下是XML的外观:

<?xml version="1.0" encoding="utf-8" ?>
<CarrierService.CarrierLookup>
  <ResponseDO>
    <status>APPROVED</status>
    <action>OK</action>
    <code>SFW00389</code>
    <displayMsg></displayMsg>
    <techMsg></techMsg>
  </ResponseDO>

以下是我用来反序列化的代码:

var serializer = new XmlSerializer(typeof(CarrierLookupResponse));
            var carrierLookupResponse = serializer.Deserialize(new StringReader(response.Key)) as CarrierLookupResponse;

问题很简单。服务返回“CarrierService.CarrierLookup”,我需要强制它反序列化为“CarrierLookupResponse”

我不能把XmlElement属性放在类本身上,所以我不知道如何正确映射这个名字。

1 个答案:

答案 0 :(得分:0)

您是否尝试过使用XmlRoot属性?

    [Serializable]
    [XmlRoot("CarrierService.CarrierLookup")] 
    public class CarrierLookupResponse
    {
    ...