2016-02-24 2 views
2

Мой XML выглядит следующим образом:Ошибка при десериализации простой 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>() ; 
    } 

И это, как я deserializng его:

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

Rename "AddressList" в "ArrayOfAddressDetails". Или перейдите в xml и переименуйте «ArrayOfAddressDetails» в «AddressList». – Quantic

ответ

1

Вы должны украсить:

  • AddressList класс с XmlRoot атрибут, подобный этому [XmlRoot("ArrayOfAddressDetails")]
  • addressList поле с XmlElement атрибут как этот [XmlElement("AddressDetails")]

У вас есть это в конце:

[XmlRoot("ArrayOfAddressDetails")] 
public class AddressList 
{ 
    [XmlElement("AddressDetails")] 
    public List<AddressDetails> addressList = new List<AddressDetails>(); 
} 
Смежные вопросы