• 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;
  • 相关阅读:
    Tomcat example 应用信息泄漏漏洞及修复
    Tomcat远程代码执行漏洞(CVE-2017-12615)修复
    Oracle安装和使用说明
    关于乱码的问题
    js 判断字符串中是否包含某个字符串
    com.alibaba.fastjson.JSONPathException: expect '], but 'y'
    java.util.UnknownFormatConversionException: Conversion = ''';
    nested exception is java.lang.NoClassDefFoundError: org/codehaus/jettison/json/JSONObject异常的解决办法
    复选框做成单选的效果
    sFlow-rt安装部署
  • 原文地址:https://www.cnblogs.com/chenmfly/p/4541387.html
Copyright © 2020-2023  润新知