我想的xml的文件的nodevlaue导入自已建立的树中,树的定义大概为 StructTree = ^TStructTree;
TStructTree = record
ParentNode: StructTree;
Attribute: String;
end;
XML文件的树型不止两级,有多级, 并将所建的树存到treeview控件上
我该怎么做啊,能帮我写出主要的建树程序吗???(能沾上边就给分)或许你有更好的方案,不访也提出来,也有分哦
先上100分,如觉得不够可另加
TStructTree = record
ParentNode: StructTree;
Attribute: String;
end;
XML文件的树型不止两级,有多级, 并将所建的树存到treeview控件上
我该怎么做啊,能帮我写出主要的建树程序吗???(能沾上边就给分)或许你有更好的方案,不访也提出来,也有分哦
先上100分,如觉得不够可另加
这个XML文件不规范,少了XML的DECLARATION。
为的是以后从其他地方读取--> 建树后再读入 ---> TTreeview做基础
procedure pXMLToTree(mXMLNode: IXMLNode; mTreeNode: TTreeNode);
var
I: Integer;
vTreeNode: TTreeNode;
begin
if SameText(mXMLNode.NodeName, '#text') then
vTreeNode := mTreeView.Items.AddChild(mTreeNode, mXMLNode.NodeValue)
else vTreeNode := mTreeView.Items.AddChild(mTreeNode, mXMLNode.NodeName);
for I := 0 to mXMLNode.ChildNodes.Count - 1 do
pXMLToTree(mXMLNode.ChildNodes[I], vTreeNode);
end;
var
I: Integer;
begin
Result := False;
if not (Assigned(mXMLDocment) and Assigned(mTreeView)) then Exit;
mTreeView.Items.BeginUpdate;
try
mTreeView.Items.Clear;
for I := 0 to mXMLDocment.ChildNodes.Count - 1 do
pXMLToTree(mXMLDocment.ChildNodes[I], nil);
finally
mTreeView.Items.EndUpdate;
end;
Result := True;
end; { XMLToTree }procedure TForm1.Button1Click(Sender: TObject);
begin
XMLDocument1.LoadFromFile('c:\temp\temp.xml');
XMLToTree(XMLDocument1, TreeView1);
end;