function XMLToTree(mXMLDocment: TXMLDocument; mTreeView: TTreeView): Boolean; 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;
其实我觉得TreeView是XML最好的表现手段,因为XML就是树形的.
http://expert.csdn.net/Expert/topic/1988/1988375.xml?temp=.2983972
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;