delphi webservices传数据


本文整理自网络,侵删。

 delphi webservices传数据

//数据集数据转换为XML
function ReplaceString(AString: string): string;
begin
  Result := StringReplace(AString, '&', '&', [rfReplaceAll]);
  Result := StringReplace(Result, '>', '>', [rfReplaceAll]);
  Result := StringReplace(Result, '<', '&lt;', [rfReplaceAll]);
end;
 
function DataSetToXml(ADataSet: TDataSet; Indent: Integer): string;
var
  i: Integer;
  Indent1, Indent2: string;
  temp: string;
begin
  Indent1 := Format('%*s', [Indent * 2, ' ']);
  Indent2 := Indent1 + ' ';
  Result := EmptyStr;
  ADataSet.First;
  while not ADataSet.Eof do
  begin
    Result := Result + Format('%s<%s>'#13#10, [Indent1, 'Record']);
    for i := 0 to ADataSet.FieldCount - 1 do
      if ADataSet.Fields[i].DataType in [ftString .. ftAutoInc, ftMemo,
        ftWideString] then
      begin
        temp := ReplaceString(ADataSet.Fields[i].AsString);
        Result := Result + Format('%2:s<%0:s>%1:s</%0:s>'#13#10,
          [ADataSet.Fields[i].FieldName, temp, Indent2])
      end;
    Result := Result + Format('%s</%s>'#13#10, [Indent1, 'Record']);
    ADataSet.Next;
  end;
end;
 
function GenerateXml(ADataSet: TDataSet): string;
begin
  Result := Format
    ('<?xml version="1.0" encoding="gb2312"?>'#13#10'<Records>'#13#10'%s</Records>',
    [DataSetToXml(ADataSet, 1)]);
end;
 
转换后生成的XML文件内容类似:
 
<?xml version="1.0" encoding="gb2312"?>
 
<Records>
 
  <Record>
 
   <userid>1</userid>
 
   <username>李三</username>
 
  </Record>
 
  <Record>
 
   <userid>2</userid>
 
   <username>王五</username>
 
  </Record>
 
</Records>
 
解析XML内容生成数据集的数据,本例中使用TXMLDocument控件
 

procedure TForm1.Button1Click(Sender: TObject);
var
  rn,pn,sn:IXMLNode;
  i,j:Integer;
begin
  ClientDataSet1.EmptyDataSet;
  rn:=x.DocumentElement;
  for i := 0 to rn.ChildNodes.Count-1 do begin
    pn := rn.ChildNodes[i];
    ClientDataSet1.Append;
    for j := 0 to pn.ChildNodes.Count-1 do begin
      sn:=pn.ChildNodes[j];
      ClientDataSet1.FindField(sn.NodeName).Text :=sn.NodeValue;
    end;
    ClientDataSet1.Post;
  end;
end;

相关阅读 >>

Delphi函数定时

Delphi 清空某个form的控件内容,用tag来判断

Delphi中使用可修改的常量

Delphi图片base64编码

在xp/2k 下实现 win+ctrl+del 等键的屏蔽的方法

Delphi10及以上版本安装activex控件

Delphi 获取指定年月的周、日数 -weeksinayear、weeksinyear、daysinayear、daysinamonth、daysinyear、daysinmonth

Delphi 2010/xe下隐藏程序在系统任务栏的图标

Delphi memo1 光标跟随鼠标移动

Delphi 关闭显示器

更多相关阅读请进入《Delphi》频道 >>



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...