我的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();
但是在反序列化方法中我得到了这个错误:
答案 0 :(得分:1)
你必须装饰:
AddressList
具有XmlRoot
属性的类[XmlRoot("ArrayOfAddressDetails")]
addressList
字段XmlElement
属性,如[XmlElement("AddressDetails")]
最后你有这个:
[XmlRoot("ArrayOfAddressDetails")]
public class AddressList
{
[XmlElement("AddressDetails")]
public List<AddressDetails> addressList = new List<AddressDetails>();
}