将简单XML反序列化为类对象时出错

时间:2016-02-24 19:45:31

标签: c# xml serialization deserialization

我的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();

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

enter image description here

1 个答案:

答案 0 :(得分:1)

你必须装饰:

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

最后你有这个:

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