ho dato XML che non posso cambiare e ho bisogno di deserializzare ad una classe personalizzata:Come deserializzare XML con più elementi nidificati?
<Person>
<Addresses>
<MainAddress>
<Country />
<City />
</MainAddress>
<AdditionalAddress>
<Country />
<City />
</AdditionalAddress>
<AdditionalAddress>
<Country />
<City />
</AdditionalAddress>
... other additional addresses
</Addresses>
... other elements
</Person>
Poi ho deserializzare:
XmlSerializer serializer = new XmlSerializer(typeof(Person), namespace);
Person person = serializer.Deserialize(stream) as Person;
Deserializer funziona bene nel caso in cui siano deserializzate elementi semplici . Quando c'è elemento come indirizzi implemento IXmlSerializable la classe dei come qui: link text
Il problema è che reader.ReadElementContentAsString() non può essere utilizzata con elementi complessi.
noti che il tipo nome non è rilevante, così ad esempio la proprietà MainAddress potrebbe essere implementata in una classe MainAddressStore o qualsiasi altra cosa (a mio avviso è talvolta confuso avere proprietà e tipi di nomi di condivisione). Questo non è molto importante per le classi skeleton come questa il cui unico scopo è il supporto per la serializzazione, ovviamente. –
Ho appena modificato i nomi delle proprietà per essere diversi dai nomi delle classi. Non sono sicuro se le distinte classi MainAddress e AdditionalAddress siano realmente necessarie. Volevo che fossero annonati con un nome XmlRoot diverso. – PanJanek
Non funziona. MainAddress è popolato ma AdditionalAddresses no. – jlp