AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

TXmlNode statt IXmlNode?

Ein Thema von stahli · begonnen am 20. Aug 2010 · letzter Beitrag vom 20. Aug 2010
Antwort Antwort
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.224 Beiträge
 
Delphi 10.4 Sydney
 
#1

TXmlNode statt IXmlNode?

  Alt 20. Aug 2010, 17:53
Nochmal eine grundsätzliche Frage:

Der XML-Datenbingungs-Experte erzeugt ja Listen von Interfaces mit eigenen propertys. Im Grunde lassen dies sich ja auch schon ganz gut benutzen.

Allerdings kann man die Interfaces nicht so einfach in eine T(Object)List kopieren und dort z.B. umsortieren. Daher wäre eine Arbeit mit richtigen Objekten (Klassen) auch überlegenswert.

Wie regelt Ihr solche Zugriffe über eigene Klassen? Und wie bekommt man dann einen Zugriff auf die jeweiligen Knoten?

Also wie macht man´s, ohne den Experten zu nutzen?
Anhand der Knotennamen müssten dann wohl die passenden Objekte erzeugt werden.

Hat mal jemand ein Beispiel? Ich würde in meinem Projekt gern direkt mit Objekten anstatt mit Interfaces arbeiten.
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#2

AW: TXmlNode statt IXmlNode?

  Alt 20. Aug 2010, 17:57
Es gibt doch auch eine TInterfaceList
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.224 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: TXmlNode statt IXmlNode?

  Alt 20. Aug 2010, 19:29
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.
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)

Geändert von stahli (20. Aug 2010 um 19:49 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
38.603 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: TXmlNode statt IXmlNode?

  Alt 20. Aug 2010, 20:31
Und die generische Liste?
TList<IXMLNode>
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
Delphi-Tage 2005-2014
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +2. Es ist jetzt 03:32 Uhr.
Powered by vBulletin® Copyright ©2000 - 2021, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf