Das Problem ist ja nicht, wie man die Daten im Speicher hält (Ne einfache rekursive Baumstruktur reicht ja und ist einsfixdrei hingebapselt), sondern wie man mit Daten arbeitet, deren Struktur man nicht kennt.
Welchen Wert hat die hinzugefügte Eigenschaft 'Color'? Wo soll sie auftauchen, wie mit ihr 'gerechnet' (im weitesten Sinne) werden? Soll da etwa nur etwas eingegeben werden?
Wenn der Anwender gerade mal eine Spalte zu einer Tabelle hinzufügen kann, geht das ja noch, aber was ist, wenn er auch ganze Unterstrukturen hinzufügen darf? Wie willst Du das dann darstellen und in der Darstellung handhaben?
XSD /
XML bietet dir ja diese Möglichkeiten, und um die so gestellte Aufgabe korrekt umzusetzen, kannst du schon mal fast komplett auf klassische Dialoge mit Eingabefeldern und Tabellen / Grids zur Darstellung verzichten. Du kannst also nur mit Baumstrukturen arbeiten, denn nur die bilden eine
XML-Struktur korrekt ab, wobei Attribute wieder anders behandelt werden müssten. Nur bei den Attributen, die in ihrer Struktur nicht hierarchisch sind, kannst du flache Strukturen (Dialoge, Grids) verwenden
Machbar ist alles, aber die Vorgabe scheint mir von jemandem zu stammen, der eigentlich keine Ahnung hat.
Ich würde mal bei Altova schauen, wie die soetwas umgesetzt haben und mich eventuell da bedienen.
Wenn es wirklich in dieser Mächtigkeit umgesetzt werden soll, dann würde ich eine Standardlösung vorschlagen (Altova macht da ganz gute Sachen).