AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Unterschiedliche Ergebnisse mit ADOM 5.1 Komponenten
Thema durchsuchen
Ansicht
Themen-Optionen

Unterschiedliche Ergebnisse mit ADOM 5.1 Komponenten

Ein Thema von Lord_Stifterl · begonnen am 29. Jan 2010
Antwort Antwort
Lord_Stifterl

Registriert seit: 13. Dez 2002
Ort: Wien
175 Beiträge
 
Turbo Delphi für Win32
 
#1

Unterschiedliche Ergebnisse mit ADOM 5.1 Komponenten

  Alt 29. Jan 2010, 13:10
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:
  TOpenXMLTree = class(TCustomVirtualStringTree)
  private
    { Private declarations }
    FXMLDoc : TDomDocument;
    FXTDParser : TXmlToDomParser;
    FDomImpl : TDomImplementation;
    ...
Beim Create der Komponente erstelle ich FDomImpl und FXTDParser und setze die Defaultvalues, welche normalerweise über den Objektinspektor gesetzt werden.

Delphi-Quellcode:
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;
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.

Delphi-Quellcode:
procedure TOpenXMLTree.LoadXML(Filename: String);
begin
  FXMLDoc := FXTDParser.ParseFile (Filename, True);
  LoadDocumentStructure;
end;
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).

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.
Alex
  Mit Zitat antworten Zitat
Antwort Antwort


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 +1. Es ist jetzt 05:24 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz