使用XmlSerializer并设置根类名

本文关键字:设置 XmlSerializer 使用 | 更新日期: 2023-09-27 18:27:09

尝试使用XmlSerializer来很好地反序列化我从Web服务中得到的东西。

这是我的班级申报单:

[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属性放在类本身上,所以我不知道如何正确映射这个名称。

使用XmlSerializer并设置根类名

您尝试过使用XmlRoot属性吗?

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