Autor Beitrag
mad.scientist
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 17



BeitragVerfasst: Do 03.02.05 01:04 
Hallo,

ich möchte in einer Anwendung, die eine baumartige Menüstruktur in einem TXMLDocument implementiert, Shortcuts auf bestimmte Nodes setzen. Das TXMLDocument wird dazu nicht in ein TTreeView überführt, sondern direkt ausgewertet. Ich habe dafür an eine Liste gedacht, die TShortCuts und die zugehörigen IXMLNodes enthält. Das wäre soweit kein Problem.

Nur: wie bekomme ich die richtigen IXMLNodes in meine Liste? Jeder Node, der einen Shortcut hat, besitzt das Attribut 'shortcut' mit der Text-Repräsentation des TShortCuts. Muss ich wirklich einmal alle Nodes im TXMLDocument durchhecheln, bei jedem nachschauen, ob Attributes['shortcut'] <> '' ist? Das XML-File hat viele Nodes ... :roll: Falls ja, muss ich dafür ja auch noch eine rekursive Prozedur schreiben, da TXMLDocument nicht wie TTreeView eine Eigenschaft Items hat, in der alle Einträge linear aufgelistet sind :(

Hat nicht jemand eine bessere Idee?

Danke und Grüße,
Florian
Klabautermann
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Veteran
Beiträge: 6366
Erhaltene Danke: 60

Windows 7, Ubuntu
Delphi 7 Prof.
BeitragVerfasst: Do 03.02.05 04:08 
Hallo,

ein ähnliches Problem hatte ich auch schon. Ich habe dort mit hilfe von mirage228 diese Notlösung entwickelt. Sie könnte auch dir helfen. Den Zeiger auf ein solches Record kannst du in die Eigenschaft Objects deiner TShortCutList (ich denke diese verwendest du) hängen und somit immer auf die ensprechenden Node zugreifen.

Gruß
Klabautermann

PS: Mit dem selben Trick kannst du die IXMLNodes auch an die TreeNodes hängen.
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Do 03.02.05 09:49 
Inwieweit die Lösung von Klabautermann nun das Problem beseitigt, kann ich nicht beurteilen. Aber wenn es darum geht, alle Knoten mit dem Attribut "shortcut" <> '' zu finden, kann ich immer wieder nur Suche in: Delphi-Forum, Delphi-Library "XPATH" vorschlagen:
ausblenden Delphi-Quelltext
1:
xmldoc.selectNodes('//*[@shortcut!=""]');					

Wenn auch die Namen des Knotens wichtig bzw. sogar bekannt sind, dann wird es sogar noch einfacher
ausblenden Delphi-Quelltext
1:
xmldoc.selectNodes('//Knotenname[@shortcut!=""]');					

Nun weiß ich aber nicht wie das mit der Verschachtelung im Tree-View sein soll. Spielt das eine Rolle? So ganz habe ich den Teil der Frage nämlich nicht verstanden. :oops:

btw, ich spreche von MS-XML, aber auch in dem TXmlDocument von Delphi müsste/sollte eine XPath-Implementation von Delphi vorhanden sein.
mad.scientist Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 17



BeitragVerfasst: So 27.02.05 23:09 
MathiasSimmack hat folgendes geschrieben:
btw, ich spreche von MS-XML, aber auch in dem TXmlDocument von Delphi müsste/sollte eine XPath-Implementation von Delphi vorhanden sein.

Hi,

Deine Lösung klingt eigentlich sehr vielversprechend, da ich nicht rekursiv die ganze XML-Struktur (ist ziemlich stark verschachtelt) durchhecheln will, um einen Shortcut zu finden.

Nur: eine Implementation in der Komponente TXMLDocument, auf die ich zurückgreife, habe ich nicht finden können?! Könnte aber auch an meinen relativ überschaubaren XML-Kenntnissen liegen ... :oops:

Grüße, Florian