프로그래밍 노트

델파이 XML Data Binding으로 xml 파일 조작하기 본문

델파이

델파이 XML Data Binding으로 xml 파일 조작하기

띠리 2007. 10. 22. 17:53

델파이 XML Data Binding으로 xml 파일 조작하기

소스를 열어둔 상태에서 Tool Palette를 보면 Delphi Projects | XML이 있다.
그 밑에 XML Data Binding이 있다.
그것을 클릭한다.

사용자 삽입 이미지

그러면 아래 윈도우가 표시되어지고
조작할  XML 파일을 선택하고 "Next" 버튼을 누른다.

사용자 삽입 이미지

XML Data Binding Wizard 화면에서도 특별히 고치지 않고 "Next" 버튼을 누른다.

사용자 삽입 이미지

그러면 아래와 같이 새로운 pas파일이 생성되면서 조금전에 선택한 XML 파일의 조작하기 쉽게 xml 파일이 바인딩된다.

사용자 삽입 이미지

그리고 이 바인딩된 xml 파일을 사용하고자 하는 곳에
추가된 unit명과 xmldom, XMLIntf, XMLDoc을 uses에 추가해야 된다.

xml Data Binding을 쓰면 간단하게 xml 파일에 노드를 추가하고
삭제하고 검색하고 변경하는 것이 가능하지만 좀 자유도(?)가 많이 떨어지게 된다.

자세한 내용은 첨부한 소스를 참조하는 것이 좋을 것같다.

unit uMain;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, stdctrls, extctrls
  ,CarList, xmldom, XMLIntf, XMLDoc;

type
  TForm1 = class(TForm)
    ListBox1: TListBox;
    ListBox2: TListBox;
    Button1: TButton;
    procedure ListBox1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }

    ixList : IXMLItemListType;
    ixDetail :Array of IXMLItemType;

  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
  iListCount : integer;
  i : integer;
  sTest : string;
begin

  iListCount := ixList.Count;
  setLength(ixDetail, iListCount);

  ListBox1.Clear;

  // xml 파일에서 아이템 가져오기
  for i := 0 to iListCount - 1 do
  begin
    ixDetail[i] := ixList.Get_Item(i);
    ListBox1.Items.Add(ixDetail[i].Name)
  end;

end;

procedure TForm1.FormCreate(Sender: TObject);
var
  CurrentPath : array [0..256] of char;
begin

  // 어플리케이션이 위치하는 디렉토리 얻기
  GetCurrentDirectory(sizeof(CurrentPath),CurrentPath);

  // xml을 읽어서 아이템 리스트 로드
  ixList := LoadItemList(CurrentPath + '\CarList.xml');
  Application.GetNamePath

end;

procedure TForm1.ListBox1Click(Sender: TObject);
var
  i: integer;
begin
  i := ListBox1.ItemIndex;

  ListBox2.Clear;
  // 선택한 아이템의 상세 정보 표시
  //ListBox2.Items.Add(ixDetail[i].Sec);
  ListBox2.Items.Add('Color = ' + ixDetail[i].Color);
  ListBox2.Items.Add('Maker = ' + ixDetail[i].Maker);
end;

end.



invalid-file

BDS 2006

프로젝트 소스와 xml 파일

Comments