16番会議室「玉石混淆みんなで作るSample蔵」に寄せられたサンプル
"MSXMLを使ってみる"
この発言に対し以下のコメントが寄せられています
#01016 貞広 賢三 さん RE:MSXMLを使ってみる
お世話になります。 MARINです。
最近、話題のXMLを使ってみようと思ったのですが、
MicroSoftさんのサイトにはVBのサンプルプログラムしかありません(ーー;
http://www.microsoft.com/japan/developer/workshop/default.asp#xml
Delphi版も欲しい〜 と思ってやってみました。
COMとかXMLのことがよくわかってないのであれですが(^^;
とりあえず、なんとか使えそうな気がしてきました。
<準備>
MS Internet Explorer 5 をインストールする
Delphiでタイプライブラリーの取り込みを行う(MS XML Version?)
と、コンポーネントパレットに5個もコンポーネントが追加されます。
が、DOMDocument以外の使い方はわからないです??
詳しい方教えてくださーいm(__)m
<テストプログラム>
新規のフォームに、
DOMDocument, OpenDialog, SaveDialog, Memo, Buttonを2個貼り付けます。
Button1,2にMicroSoftさんのページにあったサンプルプログラムを割り当ててみ
ました。
{DOMツリーの読み込み}
procedure TForm1.Button1Click(Sender: TObject);
var doc: IXMLDOMDocument;
begin
doc := DOMDocument1.DefaultInterface;
if OpenDialog1.Execute then begin
Label1.Caption := OpenDialog1.FileName;
doc.async := false;
doc.load(OpenDialog1.FileName);
Label2.Caption := IntToStr(doc.ReadyState);
DisplayNode(doc.childNodes, 0);
end;
end;
procedure TForm1.DisplayNode(Nodes: IXMLDOMNodeList; Indent: integer);
var node: IXMLDOMNode;
i: integer;
begin
Indent := Indent + 2;
for i := 0 to Nodes.length - 1 do begin
node := Nodes.item[i];
if node.nodeType = NODE_ELEMENT then
Memo1.Lines.Add(
Format('%*S<%S>', [Indent, ' ', node.nodeName]));
if node.nodeType = NODE_TEXT then
Memo1.Lines.Add(
Format('%*S%S: %S', [Indent, ' ', node.parentNode.nodeName,
node.nodeValue]));
if node.hasChildNodes then
DisplayNode(node.childNodes, Indent);
end;
end;
{XMLドキュメントの生成}
procedure TForm1.Button2Click(Sender: TObject);
var
doc: IXMLDOMDocument;
root, item: IXMLDOMNode;
begin
doc := DOMDocument1.DefaultInterface;
root := doc.createElement('person');
doc.appendChild(root);
item := doc.createElement('name');
item.appendChild(doc.createTextNode('Hiroko Shima'));
root.appendChild(item);
if SaveDialog1.Execute then
doc.save(SaveDialog1.FileName);
end;
00/02/08(火) 19:51 MARIN(PXI10376)
Original document by MARIN 氏 ID:(PXI10376)
ここにあるドキュメントは NIFTY SERVEの Delphi Users' Forum の16番会議室「玉石混淆みんなで作るSample蔵」に投稿されたサンプルです。これらのサンプルはボーランド株式会社がサポートする公式のものではありません。また、必ずしも動作が検証されているものではありません。これらのサンプルを使用したことに起因するいかなる損害も投稿者、およびフォーラムスタッフはその責めを負いません。使用者のリスクの範疇でご使用下さい。
Copyright 1996-2002 Delphi Users' Forum
|