Как десериализовать XML с несколькими вложенными объектами?

Я дал XML, который я не могу изменить, и я должен десериализовать его к пользовательскому классу:


   
       
          
          
       
       
          
          
       
       
          
          
       
       ... other additional addresses
   
   ... other elements

Затем я десериализовываю:

XmlSerializer serializer = new XmlSerializer(typeof(Person), namespace);
Person person = serializer.Deserialize(stream) as Person;       

Deserializer хорошо работает в случае, если простые элементы десериализовываются. Когда существует элемент, любят Адреса, как которые я реализую IXmlSerializable на его классе здесь: текст ссылки

Проблемой является тот читатель. ReadElementContentAsString () не может использоваться со сложными элементами.

6
задан Community 23 May 2017 в 11:48
поделиться

1 ответ

Класс Adressess должен быть объявлен следующим образом:

[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; }
}
4
ответ дан 17 December 2019 в 07:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: