【问题标题】:Error on deserializing a simple XML into a class object将简单 XML 反序列化为类对象时出错
【发布时间】:2016-06-07 07:10:35
【问题描述】:

我的 XML 如下所示:

<?xml version="1.0" encoding="utf-8"?>
<ArrayOfAddressDetails xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <AddressDetails>
    <DbServerName>2k8</DbServerName>
  </AddressDetails>
  <AddressDetails>
    <DbServerName>2k8R2D3</DbServerName>
  </AddressDetails>
</ArrayOfAddressDetails>

我为它创建了两个类,如下所示:

public class AddressDetails
{
    public string DbServerName { get; set; }
}

}

和另一个类来保存这些列表:

   public class AddressList
    {
        public List<AddressDetails> addressList= new List<AddressDetails>() ;
    }

这就是我反序列化它的方式:

    XmlSerializer deSerializer = new XmlSerializer(typeof(AddressList));
    TextReader reader = new StreamReader(@"C:\TEMP\MyXML.xml");
    Object obj = deSerializer.Deserialize(reader);
    AddressList adrsList = (AddressList)obj;
    reader.Close();

但是在反序列化方法上我得到这个错误:

【问题讨论】:

  • 将“AddressList”重命名为“ArrayOfAddressDetails”。或者转到 xml 并将“ArrayOfAddressDetails”重命名为“AddressList”。

标签: c# xml serialization deserialization


【解决方案1】:

你必须装饰:

  • AddressList 具有 XmlRoot 属性的类 [XmlRoot("ArrayOfAddressDetails")]
  • addressList 字段与 XmlElement 属性类似 [XmlElement("AddressDetails")]

最后你有这个:

[XmlRoot("ArrayOfAddressDetails")]
public class AddressList
{
    [XmlElement("AddressDetails")]
    public List<AddressDetails> addressList = new List<AddressDetails>();
}

【讨论】:

    猜你喜欢
    • 2021-11-01
    • 2020-05-10
    • 1970-01-01
    • 1970-01-01
    • 2020-08-13
    • 2021-03-06
    • 1970-01-01
    相关资源
    最近更新 更多