Главная страница
    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-17641
team
2002-04-18 21:41
2002.05.06
перевод сишного хидера на Паскаль


1-17621
allrussia
2002-04-22 21:03
2002.05.06
Доброго времени суток, знатоки. Не подскажете ли ламеру ответ на


1-17515
openfire
2002-04-19 12:38
2002.05.06
Вопрос по ListBox


1-17646
dr_neo
2002-04-22 22:33
2002.05.06
Перемешивание значений (Извините за тему сообщения!)


7-17707
Костя
2001-11-16 22:29
2002.05.06
Мониторинг COM порта





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский