![]() |
Unterschiedliche Ergebnisse mit ADOM 5.1 Komponenten
Hallo alle zusammen,
ich arbeite in letzter Zeit sehr intensiv mit XML. Ich verwende dazu OpenXML und die VirtualTreeView in meinen Projekten. Nun kam mir die Idee, ich bau mir ein OpenXMLTree. Ich habe meine Komponente also von TCustomVirtualStringTree abgeleitet und habe die ADOM-Komponenten TDOMImplementation, TXmlToDOMParser und ein TDOMDocument in den Private-Abschnitt eingefügt.
Delphi-Quellcode:
Beim Create der Komponente erstelle ich FDomImpl und FXTDParser und setze die Defaultvalues, welche normalerweise über den Objektinspektor gesetzt werden.
TOpenXMLTree = class(TCustomVirtualStringTree)
private { Private declarations } FXMLDoc : TDomDocument; FXTDParser : TXmlToDomParser; FDomImpl : TDomImplementation; ...
Delphi-Quellcode:
Beim Aufruf der LoadXML Routine wird zuerst geparst (Result ist ein TDomDocument) und anschließend sollte die Struktur aufgebaut in die Nodes in der VirtualTreeView angezeigt werden.
constructor TOpenXMLTree.Create(AOwner: TComponent);
begin inherited Create (AOwner); SetupXMLTree; if not (assigned (FDomImpl)) then FDomImpl := TDomImplementation.Create(AOwner); if not (assigned (FXTDParser)) then begin FXTDParser := TXmlToDomParser.Create(Parent); FXTDParser.DOMImpl := FDomImpl; FXTDParser.BufferSize := 4096; FXTDParser.KeepCDATASections := True; FXTDParser.KeepComments := True; FXTDParser.KeepEntityRefs := True; FXTDParser.ErrorReportingEnabled := True; end; end;
Delphi-Quellcode:
Mein Problem ist, dass dies leider so nicht funktioniert. Wenn ich den Code debugge, sehe ich, dass das XML-Dokument angeblich keine ChildNodes hat (assigned ja, aber Length = 0).
procedure TOpenXMLTree.LoadXML(Filename: String);
begin FXMLDoc := FXTDParser.ParseFile (Filename, True); LoadDocumentStructure; end; Klatsche ich die DomImplementation und den Parser auf ein Form und übergeben statt dem Filename in der LoadXML-Routine das bereits fertig geparste XML-Dokument, sind plötzlich ChildNodes vorhanden. Wäre toll wenn mir jedmand auf die Sprünge helfen kann und mir sagt warum das nicht klappt. Grundsätzlich wäre zu sagen, dass ist meine erste Eigenbaukomponente. Sollte ich also irgendwelche grundlegenden Sachen vergessen haben, bitte mich darauf hinzuweisen. Danke Alex PS: Ich weiß, es gibt bereit eine XMLTree-Komponente, diese basiert aber auf der MSXML_TLB. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:58 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz