Главная страница
    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.45 MB
Время: 0.004 c
1-17583
PaRL
2002-04-22 15:43
2002.05.06
Координаты


1-17614
VJar
2002-04-22 23:29
2002.05.06
Отключение события


3-17488
Dmitry_
2002-04-12 13:28
2002.05.06
ADO + Oracle


1-17569
HDD
2002-04-22 05:46
2002.05.06
Можно ещё немного помощи


4-17748
MZ
2002-03-03 21:56
2002.05.06
TWordApplication





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский