zoukankan      html  css  js  c++  java
  • 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;

  • 相关阅读:
    越长大越孤单
    关于ASP.NET 启动Process的讨论
    利用selenium开发一个功能测试的框架
    开博啦(上班时间)
    利用回发 实现一个简单的AutoComplete功能
    FIFO和双端口RAM
    8位定点数开方程序(贴下来以后研究)
    Eclipse下文件读取的问题:Failed to reading file xxxxx
    Error:NgdBuild:604解决方法(添加NGC文件方法)
    Mandelbrot:美丽的分形
  • 原文地址:https://www.cnblogs.com/hnxxcxg/p/2743079.html
Copyright © 2011-2022 走看看