프로그래밍 노트

델파이에서 XML 파일 불러서 TreeView에 표시하기 본문

델파이

델파이에서 XML 파일 불러서 TreeView에 표시하기

띠리 2007. 10. 12. 21:22

델파이에서 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 파일의 모든 노드와 속성을 표시하는 소스

 

invalid-file

델파이 2006 소스

델파이 2006 소스
Comments