由于项目要用到webservice的通讯 xml的操作不可避免
网上找了很久delphi对xml操作的文档,没有几个是详细的。
下面我自己写了一个例子 针对dephi7的TXMLDocument控件的操作示例
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, xmldom, XMLIntf, msxmldom, XMLDoc, StdCtrls, Buttons, OleCtrls,
SHDocVw;
type
TForm1 = class(TForm)
xmldcmnt1: TXMLDocument;
btn1: TBitBtn;
btn2: TButton;
procedure btn1Click(Sender: TObject);
procedure btn2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.btn1Click(Sender: TObject);
var
tmpFile : TextFile;
begin
try
AssignFile(tmpFile,xmldcmnt1.FileName);
rewrite(tmpFile);
writeln(tmpFile,'<?xml version="1.0" encoding="GB18030"?>',#10#13);
writeln(tmpFile,'<XML>',#10#13);
writeln(tmpFile,'</XML>');
finally
CloseFile(tmpFile);
end;
try
xmldcmnt1.Active := True;
xmldcmnt1.Node.ChildNodes.Nodes[1].AddChild('社会保障卡号').Text := '54654654';
xmldcmnt1.Node.ChildNodes.Nodes[1].AddChild('公民身份号码').Text := '54545454';
xmldcmnt1.Node.ChildNodes.Nodes[1].AddChild('姓名').Text := '你条命';
//写入分支节点
xmldcmnt1.Node.ChildNodes.Nodes[1].ChildNodes['sd'].AddChild('速度').Text:='撒旦法';
xmldcmnt1.Node.ChildNodes.Nodes[1].ChildNodes['sd'].AddChild('速度').Text:='撒旦法2';
xmldcmnt1.Node.ChildNodes.Nodes[1].ChildNodes['sd'].AddChild('速度').Text:='撒旦法3';
xmldcmnt1.Node.ChildNodes.Nodes[1].ChildNodes['sd'].AddChild('速度').Text:='撒旦法4';
xmldcmnt1.Node.ChildNodes.Nodes[1].ChildNodes['sd'].AddChild('速度').Text:='撒旦法4';
finally
xmldcmnt1.SaveToFile;
xmldcmnt1.Active := False;
end;
end;
procedure TForm1.btn2Click(Sender: TObject);
var
s :string;
aNode, aValueNode: IXMLNode;
list : IXMLNodeList;
i :Integer;
begin
if not (FileExists(xmldcmnt1.FileName)) then
raise Exception.Create('找不到xml文件');
try
xmldcmnt1.Active := True;
list :=xmldcmnt1.Node.ChildNodes.Nodes[1].ChildNodes;
list :=xmldcmnt1.Node.ChildNodes.Nodes[1].ChildNodes['sd'].ChildNodes;
for i:=0 to list.Count-1 do
begin
ShowMessage(list.Nodes[i].ChildValues['']);
end;
finally
xmldcmnt1.Active := False;
end;
end;
end.