使用 C# 反序列化 XML

本文关键字:XML 反序列化 使用 | 更新日期: 2023-09-27 18:34:55

我有这个XML片段,我正在尝试反序列化它。我已经尝试了以下类来反序列化,但我没有得到地址行,我只得到了城市州和邮政编码。有人可以指出我的错误吗?我看不出我做错了什么。 XML 和类就在下面。

.XML:

         <RemitTo>
            <Address>
                <AddressLine lineNumber="1">Blah blah</AddressLine>
                <AddressLine lineNumber="2">bah bah bah</AddressLine>
                <AddressLine lineNumber="3">bah3</AddressLine>
                <City>Minneapolis</City>
                <State>MN</State>
                <PostalCode>55413</PostalCode>
                <Country isoCountryCode="US">United States</Country>
            </Address>
        </RemitTo>

.CLASS:

[XmlRoot("RemitTo")]
    public partial class RemitTo
    {
        [XmlElementAttribute("Address")]
        public List<Address> RemitToAddress { get; set; }
    }
    public partial class Address
    {

        [XmlArray("Address")]
        [XmlArrayItem("AddressLine")]
        public List<string> AddressLine { get; set; }

        public string City { get; set; }
        public string State { get; set; }
        public string PostalCode { get; set; }
        public string Country { get; set; }
    }

在代码中我这样做。

RemitTo i;
XmlSerializer serializer = new XmlSerializer(typeof(RemitTo));
i = (RemitTo)serializer.Deserialize(addressReader);

使用 C# 反序列化 XML

应该这么简单

    [XmlElement("AddressLine")]
    public List<string> AddressLine { get; set; }

XmlArray不适用,因为我们已经在 Address 类中,并且子项周围没有进一步的包装元素。

参考