【更新内容】
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=”编码”?>行和是否格式化内容。
【更新级别】
建议更新