QXML更新-新增TQSoapXML类以提供对Soap格式的XML支持等更新

【更新内容】

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=”编码”?>行和是否格式化内容。

【更新级别】

建议更新

 

滚动至顶部