일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 기초
- MySQL
- 입문
- MFC
- PostgreSQL
- 예제
- winsock
- 소니
- 문자열
- 시리얼 통신
- vb
- 파라미터
- Delphi
- WIN32 SDK
- dll
- Visual Studio 2005
- VB.NET
- SQL
- 데이터베이스
- xml
- 델파이
- SDK
- c#
- 셋업
- 인스톨
- Visual Basic
- 초보
- 설치
- 파이어버드
- Firebird
- Today
- Total
프로그래밍 노트
델파이에서 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 소스