Главная страница
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.012 c
3-17467
viru$
2002-04-11 18:57
2002.05.06
Вопрос по клиент/сервер


1-17645
drnet
2002-04-22 16:51
2002.05.06
Форма не стандартной формы. HELP!!!!!


4-17750
mikki
2002-03-03 12:28
2002.05.06
Послать сообщение от неактивного окна.


1-17570
HDD
2002-04-22 05:43
2002.05.06
Помогите пожалуйста


14-17693
Merlin
2002-03-28 10:05
2002.05.06
Открыт новый сайт, новый форум. Море всего интересного!