【问题标题】:Facing issue with converting XML to Object面临将 XML 转换为 Object 的问题
【发布时间】:2018-11-13 05:19:33
【问题描述】:

我正在尝试将以下 XML 转换为对象,

<Addresses><Address><AddressLine1>61A PEEL ST</AddressLine1><AddressLine2></AddressLine2><Suburb>WEST MELBOURNE</Suburb><State>VIC</State><PostCode>3003</PostCode></Address><Address><AddressLine1>U 101/61 PEEL ST</AddressLine1><AddressLine2></AddressLine2><Suburb>WEST MELBOURNE</Suburb><State>VIC</State><PostCode>3003</PostCode></Address><Address><AddressLine1>U 102/61 PEEL ST</AddressLine1><AddressLine2></AddressLine2><Suburb>WEST MELBOURNE</Suburb><State>VIC</State><PostCode>3003</PostCode></Address><Address><AddressLine1>59 PEEL ST</AddressLine1><AddressLine2></AddressLine2><Suburb>WEST MELBOURNE</Suburb><State>VIC</State><PostCode>3003</PostCode></Address><Address><AddressLine1>63 PEEL ST</AddressLine1><AddressLine2></AddressLine2><Suburb>WEST MELBOURNE</Suburb><State>VIC</State><PostCode>3003</PostCode></Address><Address><AddressLine1>63A PEEL ST</AddressLine1><AddressLine2></AddressLine2><Suburb>WEST MELBOURNE</Suburb><State>VIC</State><PostCode>3003</PostCode></Address><Address><AddressLine1>57 PEEL ST</AddressLine1><AddressLine2></AddressLine2><Suburb>WEST MELBOURNE</Suburb><State>VIC</State><PostCode>3003</PostCode></Address><Address><AddressLine1>57A PEEL ST</AddressLine1><AddressLine2></AddressLine2><Suburb>WEST MELBOURNE</Suburb><State>VIC</State><PostCode>3003</PostCode></Address></Addresses>

使用以下代码反序列化 XML,

XmlSerializer serializer = new XmlSerializer(typeof(Addresses));
            using (TextReader reader = new StringReader(addressValidationResult.Alternates))
            {
                Addresses result = (Addresses)serializer.Deserialize(reader);
            }

使用“addressValidationResult.Alternates”作为结果提供上述 XML 字符串。

PFB 我的模型,

namespace Models
{
    public class Addresses
    {
         public List<Address> AddressesList { get; set; }
    }

    public class Address{
        public string AddressLine1 { get; set; }
        public string AddressLine2 { get; set; }
        public string Suburb { get; set; }
        public string State { get; set; }
        public string PostCode { get; set; }
    }
}

结果是一个没有任何数据的空列表。代码没有抛出异常,但数据也没有得到转换。

谁能告诉我我在这里缺少什么

【问题讨论】:

标签: c# xml-serialization


【解决方案1】:

您的反序列化模型和代码看起来是正确的,唯一缺少的是一些 XmlElement 属性。将[XmlElement("Address")] 添加到AddressesList 属性是这里的关键解决方案。

    [XmlRoot("Addresses")]
    public class Addresses
    {
        [XmlElement("Address")]
        public List<Address> AddressesList { get; set; }
    }

    public class Address
    {
        [XmlElement("AddressLine1")]
        public string AddressLine1 { get; set; }
        [XmlElement("AddressLine2")]
        public string AddressLine2 { get; set; }
        [XmlElement("Suburb")]
        public string Suburb { get; set; }
        [XmlElement("State")]
        public string State { get; set; }
        [XmlElement("PostCode")]
        public string PostCode { get; set; }
    }

【讨论】:

    猜你喜欢
    • 2013-12-16
    • 2013-05-03
    • 2022-09-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-02
    • 1970-01-01
    • 2014-08-11
    相关资源
    最近更新 更多