Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.05.06;
Скачать: CL | DM;

Вниз

TreeView   Найти похожие ветки 

 
Сатир   (2002-04-22 16:47) [0]

При создании дерева в данном примере корень создается дважды.
Подскажите, как пофиксить этот баг.
Вот код:

unit MainUnit;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ComCtrls, StdCtrls, XDOM_2_3, TypInfo;

type
TXMLTreeView = class(TForm)
Button1: TButton;
TreeView1: TTreeView;
OpenDialog1: TOpenDialog;
procedure UpdateTreeView(RootNode:TDOMElement; const doc: TdomDocument);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
XMLTreeView: TXMLTreeView;

implementation

{$R *.dfm}
procedure TXMLTreeView.UpdateTreeView(RootNode:TDOMElement; const doc: TdomDocument);
procedure HandleNodeList(Parent:TTreeNode; DomNodeList:TDomNodeList);
var
i:integer;
DomNode:TDomNode;
tn:TTreeNode;
astr:string;
begin
for i:=0 to pred(DomNodeList.length) do
begin
DomNode:=DomNodeList.Item(i);
astr:=DomNode.NodeName;
// if DomNode.NodeValue <> "" then astr:=astr+" ["+DomNode.NodeValue+"]";
// astr:= astr + " ("+GetEnumName(TypeInfo(TdomNodeType), integer(DomNode.NodeType))+") ";
if domNode.nodeType = ntText_Node
then if TdomText(domNode).isWhitespaceInElementContent
then astr:= astr + "-- Whitespace in element content";
if domNode.nodeType=ntElement_Node then
tn:=parent.owner.AddChildObject(Parent,astr,domNode);
if assigned(DomNode.ChildNodes) then HandleNodeList(tn, DomNode.ChildNodes);
end;
end;
var
root:TTreeNode;
begin
treeview1.Items.BeginUpdate;
try
treeview1.Items.Clear;
Root:= treeview1.Items.AddObject(nil,RootNode.nodeName, RootNode);//concat(doc.NodeName," (",GetEnumName(TypeInfo(TdomNodeType), integer(Doc.NodeType)),") ",Doc.classname),doc);
--^ Это было раньше
HandleNodeList(Root,doc.ChildNodes);
finally
treeview1.Items.EndUpdate;
end;
end;


procedure TXMLTreeView.Button1Click(Sender: TObject);
var DomImpl : TDOMImplementation;
XMLParser : TXmlToDomParser;
Document : TDOMDocument;
Root:TDOMElement;
begin
With OpenDialog1 do
if Execute then begin
// Create DomImplementation and XMLParser
DomImpl := TDOMImplementation.Create( nil );
XMLParser := TXmlToDomParser.Create( nil );
// Assign XMLParser to existed DomImplementation
XMLParser.DOMImpl := DomImpl;
// Parse XML-file to DOM
XMLParser.fileToDom(filename);
//Документ
Document := TDOMDocument(DOMImpl.documents.item(0));
Root := Document.documentElement;

UpdateTreeView(Root, Document);

XMLParser.Free;
DomImpl.Free;
end;
end;

end.

Буду благодарен за любые идеи.


 
Сатир   (2002-04-22 18:31) [1]

Всем спасибо, уже нашел



Страницы: 1 вся ветка

Текущий архив: 2002.05.06;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.009 c
6-17665
Yr2
2002-02-16 20:47
2002.05.06
NMHTTP.Post - как передать большой бинарный файл?


4-17732
a_k_v
2002-01-22 08:36
2002.05.06
OPC + Delphi + SafeArray =???


1-17549
Катерина
2002-04-23 14:25
2002.05.06
Опять про Chart


1-17513
Billy
2002-04-21 03:36
2002.05.06
Битая Делфа


3-17499
Саша
2002-04-12 14:03
2002.05.06
Работа с файлами Html