ich XML gegeben habe, dass ich nicht und ich brauche es deserialisieren zu einer benutzerdefinierten Klasse ändern können:Wie XML mit mehreren verschachtelten Elementen deserialisieren?
<Person>
<Addresses>
<MainAddress>
<Country />
<City />
</MainAddress>
<AdditionalAddress>
<Country />
<City />
</AdditionalAddress>
<AdditionalAddress>
<Country />
<City />
</AdditionalAddress>
... other additional addresses
</Addresses>
... other elements
</Person>
Dann deserialisieren I: sind deserialisiert
XmlSerializer serializer = new XmlSerializer(typeof(Person), namespace);
Person person = serializer.Deserialize(stream) as Person;
Deserializer funktioniert bei einfachen Elementen . Wenn es Elemente wie Adressen I IXmlSerializable wie hier auf seiner Klasse implementieren: link text
Das Problem ist, dass reader.ReadElementContentAsString() kann nicht mit komplexen Elementen verwendet werden.
anzumerken, dass die Typnamen nicht relevant ist, so z.B. Die MainAddress-Eigenschaft könnte in einer Klasse MainAddressStore oder was auch immer implementiert werden (ich finde es manchmal verwirrend, dass Eigenschaften und Typen Namen teilen). Das ist für Skelettklassen wie dieses, deren einziger Zweck die Serialisierungsunterstützung ist, natürlich nicht sehr wichtig. –
Ich habe gerade die Eigenschaftsnamen so geändert, dass sie sich von den Klassennamen unterscheiden. Ich bin nur nicht sicher, ob die verschiedenen Klassen MainAddress und AdditionalAddress wirklich benötigt werden. Ich wollte, dass sie mit einem anderen XmlRoot-Namen angekündigt wurden. – PanJanek
Ich arbeite nicht. MainAddress ist ausgefüllt, AdditionalAddresses nicht. – jlp