【更新内容】
1、新增TQSoapXML类,以简化对Soap格式的XML支持:
TQSoapXML = class
protected
FRoot: TQXMLNode;
FHeader: TQXMLNode;
FBody: TQXMLNode;
public
///<summary>构造函数</summary>
constructor Create; overload;
///<summary>析构函数</summary>
destructor Destroy; override;
///<summary>添加一个Soap头部定义</summary>
///<param name="AName">要添加的头结点名称</param>
///<returns>返回新添加的Soap头子结点</returns>
function Header(const AName: QStringW): TQXMLNode; overload;
///<summary>添加一个带有命名空间的头结点</param>
///<param name="ANodeName">要添加的头结点名称</param>
///<param name="ANameSpace">命名空间的URI地址</param>
///<returns>返回新添加的Soap头子结点</returns>
///<remarks>请自己保证URI地址的有效性,QSoapXML不检查内容</remarks>
function Header(const ANodeName,ANSUri: QStringW): TQXMLNode; overload;
///<summary>获取Soap头部的根定义</summary>
///<returns>返回Soap头部的根定义</returns>
function Header: TQXMLNode;overload;
///<summary>获取Soap正文部分的根定义</summary>
///<returns>返回Soap正文部分的根定义</returns>
function Body: TQXMLNode;overload;
///<summary>添加一个指定名称的正文结点</summary>
///<param name="AName">要添加的结点名称</param>
///<returns>返回新添加的Soap正文子结点</returns>
function Body(const AName: QStringW): TQXMLNode; overload;
///<summary>保存到流中</summary>
///<param name="AStream">要保存的目标数据流</param>
procedure SaveToStream(AStream: TStream);
///<summary>保存到文件中</summary>
///<param name="AFileName">目标文件名</param>
procedure SaveToFile(const AFileName: QStringW);
///<summary>根结点</summary>
property Root:TQXMLNode read FRoot;
end;简单示例代码如下:
procedure TForm2.Button13Click(Sender: TObject);
var
AXML:TQSoapXML;
AStream:TMemoryStream;
begin
AXML:=TQSoapXML.Create;
try
AXML.Header('m:SessionType','http://siebel.com/webservices').AddText('Stateless');
AXML.Body('CommandKey').AddText('100');
AStream:=TMemoryStream.Create;
AXML.SaveToStream(AStream);
mmResult.Clear;
AStream.Position:=0;
mmResult.Lines.Add(LoadTextW(AStream));
FreeObject(AStream);
finally
AXML.Free;
end;
end;2、 SaveToStream和SaveToFile新增一个AWriterHeader和AFormat参数来决定是否写入<?xml version=”1.0″ encoding=”编码”?>行和是否格式化内容。
【更新级别】
建议更新
