MS XML を使う
マイクロソフトの MSXML で DOM API を使う方法です。
まず MSXML 3.0 をダウンロードします。>ここ
インストールが完了したら Delphi を起動して [ プロジェクト | タイプライブラリの取り込み ] を選びます。ダイアログが表示されたらリストの中から "Microsoft XML version xx" を選択します。
まず MSXML のインスタンスを生成して XML ファイルを読み込むには、IXMLDOMDocument の load メソッドを使います。
| ■ MSXML の使用例 |
//uses MSXML2_TLB
procedure TForm1.Button2Click(Sender: TObject);
var
domDocument : IXMLDOMDocument;
begin
domDocument := CoDOMDocument.Create();
domDocument.async := False;
if (domDocument.load('D:\personal.xml')) then begin
//成功
end else begin
//失敗
end;
end;
|
DOMドキュメントからルートノードを取得するには Get_documentElement メソッドを使います。
| ■ ルートノードの取得 |
var rootNode : IXMLDOMElement; begin //ルートノードの取得 rootNode := domDocument.Get_documentElement(); ShowMessage(rootNode.Get_tagName()); end; |
ぶら下がるノードを再帰的に取得するには以下のようにします。各インターフェイスのメソッドは DOM API に準拠しているので DOM の資料を確認して下さい。
| ■ ルートノードの取得 |
procedure TForm1.Button5Click(Sender: TObject);
var
domDocument : IXMLDOMDocument;
rootNode : IXMLDOMElement;
begin
domDocument := CoDOMDocument.Create();
domDocument.async := False;
if (domDocument.load('D:\personal.xml')) then begin
//ルートノードの取得
rootNode := domDocument.Get_documentElement();
PrintNode(rootNode, 0);
end else begin
//失敗
end;
end;
procedure TForm1.PrintNode(parentNode: IXMLDOMNode; Level: integer);
var
ix : integer;
begin
for ix := 0 to parentNode.childNodes.Get_length - 1 do begin
Memo1.Lines.Add(IntToStr(Level) +
parentNode.childNodes.item[ix].Get_nodeName());
PrintNode(parentNode.childNodes.item[ix], Level + 1);
end;
end;
|