zoukankan      html  css  js  c++  java
  • 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;
  • 相关阅读:
    PHP之数据库操作(一)
    PHP之字符串操作
    Subline使用方法
    POST和GET的区别(面试回答)
    面试题(1)
    http协议
    JS 闭包(内存溢出与内存泄漏)(垃圾回收机制)
    JS----事件机制 事件冒泡 事件捕获 事件委托
    js的数据类型、判断对象类型 js对象
    JS----DOM节点操作:创建 ,插入,删除,复制,查找节点
  • 原文地址:https://www.cnblogs.com/chenmfly/p/4541387.html
Copyright © 2011-2022 走看看