我已经提供了无法更改的 XML,我需要将其反序列化为自定义类:
<Person>
<Addresses>
<MainAddress>
<Country />
<City />
</MainAddress>
<AdditionalAddress>
<Country />
<City />
</AdditionalAddress>
<AdditionalAddress>
<Country />
<City />
</AdditionalAddress>
... other additional addresses
</Addresses>
... other elements
</Person>
然后我反序列化:
XmlSerializer serializer = new XmlSerializer(typeof(Person), namespace);
Person person = serializer.Deserialize(stream) as Person;
反序列化器在反序列化简单元素的情况下工作正常。 当有像 Addresses 这样的元素时,我在它的类上实现 IXmlSerializable,如下所示:link text
问题是 reader.ReadElementContentAsString() 不能用于复杂元素。
最佳答案
地址类应该这样声明:
[XmlRoot("Adressess")]
public class Adressess
{
[XmlElement(ElementName = "MainAddress")]
public MainAddress Main { get; set; }
[XmlElement(ElementName = "AdditionalAddress")]
public List<AdditionalAddress> AdditionalAddresses { get; set; }
}
[XmlRoot("MainAddress")]
public class MainAddress
{
public string Country { get; set; }
public string City { get; set; }
}
[XmlRoot("AdditionalAddress")]
public class AdditionalAddress
{
public string Country { get; set; }
public string City { get; set; }
}
关于asp.net - 如何使用多个嵌套项反序列化 XML?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1880983/