Entwickler-Ecke
Grafische Benutzeroberflächen (VCL & FireMonkey) - ShortCut auf IXMLNode in einem TXMLDocument setzen
mad.scientist - Do 03.02.05 01:04
Titel: ShortCut auf IXMLNode in einem TXMLDocument setzen
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 - Do 03.02.05 04:08
Hallo,
ein ähnliches Problem hatte ich auch schon. Ich habe dort mit hilfe von mirage228
diese [
http://www.delphi-forum.de/viewtopic.php?p=166392#166392] 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.
Delete - 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
"XPATH" vorschlagen:
Delphi-Quelltext
1:
| xmldoc.selectNodes('//*[@shortcut!=""]'); |
Wenn auch die Namen des Knotens wichtig bzw. sogar bekannt sind, dann wird es sogar noch einfacher
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 - 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
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!