Einzelnen Beitrag anzeigen

Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.343 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: XML-Datenbindungs-Experte -> Knoten-ID

  Alt 9. Aug 2010, 10:27
Ok, wenn man über das XMLDocument1.DOMDocument zugreift, kann man XPath nutzen:
Delphi-Quellcode:
XPath: String;
...
//XPath := '//Panels/Panel[@id="P' + IntToStr(P.Tag) + '"]';
XPath := '*/Panel[@id="P' + IntToStr(P.Tag) + '"]';
P.Caption := (XMLDocument1.DOMDocument as IDOMNodeSelect).selectNode(XPath + '/caption').childNodes[0].nodeValue;
P.Left := StrToIntDef((XMLDocument1.DOMDocument as IDOMNodeSelect).selectNode(XPath + '/left').childNodes[0].nodeValue, 0);
P.Top := StrToIntDef((XMLDocument1.DOMDocument as IDOMNodeSelect).selectNode(XPath + '/top').childNodes[0].nodeValue, 0);
Das kann man ja über eigene Funktionen für den Zugriff (lesen/schreiben) auch noch vereinfachen.

Recht verwirrend sind für den Anfang die Unterschiede von DOMNode und XMLNode etc.
Bei DOMNode gibt es z.B. keine Eigenschaft "Text", statt dessen muss man (m.E.) "childNodes[0].nodeValue" verwenden.
Aber es geht ja letztlich.

Jetzt ist die Frage, ob ein Zugriff über "normale Knoten" oder über die "Experten-Schnittstellen" sinnvoller ist.
Jelly hat hier einmal die Schnittstellennutzung sehr gelobt - ob´s noch gilt?

Wie benutzt Ihr XML-Dateien?

Den Vorteil, dass man alle mögliche Schweinereien speichern kann, ohne an starre Strukturen (wie einer SQL-Datenbank) gebunden zu sein, finde ich sehr interessant.
Die Experten-Schnittstellen setzen dabei vielleicht wieder eher Grenzen!?

Ich will einmal meine eigenen Datenkomponenten (bisher Firebird) auf XML anpassen. Das sieht etwa so aus:
TxmlEdit von TEdit abgeleitet.
Zusätzliche Eigenschaften: XPath und ID
Zusätzliche Methoden: ReadValue, WriteValue
Wird ein xmlEdit angezeigt (Paint), holt sich die Komponente zuvor "schnell noch" mit ReadValue den aktuellen Wert aus der XML-Datei.
Ändert der Nutzer den Text wird der neue Text sofort mit WriteValue in die XML-Datei geschrieben (dadurch werden andere xmlEdit´s auch gleich veranlasst, sich mal neu zu zeichnen (Invalidate)).
Durch Zuweisung von XPath und ID kann jede xmlEdit einen bestimmten "Datensatz" und "Feld" in der XML-Datei repräsentieren (also z.B. Vornamen der Person mit ID='123' oder Nachnamen der Person mit ID='456').
Alle Standardkomponenten lassen sich als xml-Variante ableiten. So kann z.B. ein xmlPanel oder xmlLabel zur Anzeige von Einträgen verwendet werden.

Entsprechende Komponenten habe ich bisher für Firebird benutzt (ging einwandfrei) und will das mal auf XML umstellen...

- Erfinde ich das Rad neu?
- Habt Ihr Interesse daran?
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)

Geändert von stahli ( 9. Aug 2010 um 10:53 Uhr)
  Mit Zitat antworten Zitat