델파이에서 XML 파일 불러서 TreeView에 표시하기
델파이에서 XMLDocument 컴포넌트를 사용해서
XML 파일 불러 TreeView에 표시하는 소스
■ XML 파일 불러오기
// XML 파일 읽어오기
procedure TForm1.Button2Click(Sender: TObject);
Var
xdSoft : TXMLDocument;
begin
OpenDialog1.Filter := 'Xml file|*.xml';
if OpenDialog1.Execute then
begin
// XML Document 만들기
xdSoft := TXMLDocument.Create(Application);
// XML Document 불러오기
xdSoft.LoadFromFile(OpenDialog1.FileName);
xdSoft.Active := True;
// TreeView 기존 데이터 삭제
TreeView1.Items.Clear;
// XML 구조를 읽어서 TreeView에 표시
MakeTree(nil, xdSoft.DocumentElement);
// TreeView 다 펴서 보여주기
TreeView1.FullExpand;
xdSoft.Free;
end;
end;
■ XML 파일을 트리뷰에 표시
// XML 구조를 읽어서 TreeView에 표시
procedure TForm1.MakeTree(TreeNode : TTreeNode; XMLNode : IXMLNode);
var
Node: TTreeNode;
i: integer;
sNode : string;
begin
sNode := '';
// 노드 밑에 노드가 없을 때
if (XMLNode.NodeType = ntText) then
begin
// 노드에 Attribute가 있을 때
if XMLNode.AttributeNodes.Count > 0 then
begin
sNode := ' |';
For i :=0 To XMLNode.AttributeNodes.Count - 1 Do
begin
sNode := sNode +
XMLNode.AttributeNodes.Get(i).NodeName + ' : ' +
XMLNode.AttributeNodes.Get(i).NodeValue + '|';
end;
end;
// 트리뷰에 노드 추가
Node := TreeView1.Items.AddChild(TreeNode, XMLNode.NodeValue + sNode);
end
// 노드 밑에 노드가 있을 때
else
begin
// 노드에 Attribute가 있을 때
if XMLNode.AttributeNodes.Count > 0 then
begin
sNode := ' |';
For i :=0 To XMLNode.AttributeNodes.Count - 1 Do
begin
sNode := sNode +
XMLNode.AttributeNodes.Get(i).NodeName + ' : ' +
XMLNode.AttributeNodes.Get(i).NodeValue + '|';
end;
end;
// 트리뷰에 노드 추가
Node := TreeView1.Items.AddChild(TreeNode, XMLNode.NodeName + sNode);
end;
// 노드 밑에 노드가 있을 경우
for i := 0 to XMLNode.ChildNodes.Count - 1 do
// XML 구조를 읽어서 TreeView에 표시
MakeTree(Node, XMLNode.ChildNodes.Nodes[i]);
end;
XML 파일의 모든 노드와 속성을 표시하는 소스

델파이 2006 소스