Verwalten von XML-Hierarchieinformationen (dh Parent-Child-Informationen) in von XmlSerializer generierten Objekten
Seit einiger Zeit versuche ich, das folgende Problem zu lösen und mir gehen die Ideen aus:
Ich habe mit dem Tool xsd.exe eine Reihe von C # -Klassen aus einem xsd-Schema generiert, und die Deserialisierung von XML-Dateien funktioniert einwandfrei. Das Problem ist, dass ich neben der Bequemlichkeit und Sicherheit der Verwendung der automatisch generierten Klassen auch Informationen über die XML-Hierarchie benötige, dh ich muss Eltern-Kind-Beziehungen zwischen den Objekten herstellen, die während der Deserialisierung erstellt wurden. Beachten Sie, dass ich vermeiden möchte, eine separate XML-Hierarchiestruktur (wie einen DOM-Baum) zu führen, sondern die generierten Objekte die Übersicht über ihre Eltern und Kinder behalten möchte.
Ich habe es geschafft, dies in Java mit JAXB durchzuziehen:
Definieren einer gemeinsamen Basisklasse für alle deserialisierten Objekte. Diese Basisklasse enthält eine Liste von untergeordneten Objekten und einen Verweis auf ein übergeordnetes Objekt (falls vorhanden).
Verwenden der Unmarshaller.Listener-Funktion, die einen Rückruf bei abgeschlossener Objektdeserialisierung bereitstellt. Dieser Rückruf enthält einen Verweis auf das übergeordnete Objekt des kürzlich deserialisierten Objekts, wodurch das Einrichten von Eltern-Kind-Beziehungen trivial wird.
Wie würde ich das in C # machen? Ich habe mir die MSDN-Dokumente angesehen und viel gegoogelt, aber keine nützlichen Informationen gefunden.