Ja, aber die bietet nicht die Möglichkeiten, wie eine TList. Z.B. die Sort-Funktion.
Ich werde mal Komponenten erstellen und durchtesten, die jeweils eine IXmlNode als Schnittstelle auf einen bestimmten Knoten erhalten und dann über bestimmte Eigenschaften (je nach Klasse) und deren Getter und Setter auf die "Knotendaten" zugreifen. Dann kann man auch z.B. ReadBool u.ä. erstellen, die intern die Konteneigenschaft .Text verwenden und so Probleme durch leere oder nicht existierende Knoten vermeiden.
Listenkomponenten erhalten zusätzlich die Möglichkeit, in einer TComponentList weitere Subkomponenten zu verwalten.
Nach dem Laden einer
XML-Datei müssten dann vom Wurzelknoten ausgehend alle notwendigen Komponenten einmal erzeugt werden (die genaue Klasse dann abhängig vom Knotennamen), und jeder so erzeugten Komponente wird dann der eigentliche Knoten zugewiesen, in dem alle Daten sind und auch bleiben.
So hätte man die
XML-Struktur in "richtigen Klassen" bzw. Objekten abgebildet. Änderungen in den Objekten (z.B. MyObjekt.Delete) werden dann eben auch an die eigentlichen Knoten weiter gegeben.
Ich werde das mal so antesten.
Man kann zwar dann den
XML-Experten nicht mehr nutzen, hat dafür aber (wenn das so klappt) bessere Kontrolle über die eigenen Daten. Und die
XML-Struktur ergibt sich dann nur aus den erstellten Komponenten. Man muss also nicht zuvor eine
XML oder XSD anlegen und analysieren (lassen).
Fehlende, oder überflüsse Daten in einer
XML-Datei sind bei einer solchen Herangehensweise dann nicht störend.