• 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;

  • 相关阅读:
    20155302 课堂实践二
    20155302 课堂实践
    2017-2018-1 20155302 《信息安全系统设计基础》第6周学习总结
    2017-2018-1 20155302 《信息安全系统设计基础》第5周学习总结
    2017-2018-1 20155302 《信息安全系统设计基础》第四周学习总结
    2017-2018-1 20155301 《信息安全系统设计基础》第九周学习总结
    课下作业和课上作业
    2017-2018-1 20155301 《信息安全系统设计基础》第八周学习总结
    信息安全系统设计基础实验二
    信息安全系统设计基础第二次实验
  • 原文地址:https://www.cnblogs.com/hnxxcxg/p/2743079.html
Copyright © 2020-2023  润新知