zoukankan      html  css  js  c++  java
  • delphi7 xml通用解析转换为stringgrid

    对于有n多记录的xml,可以填充到stringgrid中

    其中 vkeynode 为 xml中 重复节点

    function CommonAnalyzeXml(vxml,vkeynode: string;var vgrid: TStringGrid): Boolean;

    var
      lxml: TNativeXml;
      i,j,k: Integer;
      llist: TsdNodeList;
      lnode: TXmlNode;
      lstr: string;
      ls,lnamels: TStringList;
    begin
      Result := False;
      vxml := StringReplace(vxml,'GB2312','UTF-8',[rfReplaceAll]);
      lxml := TNativeXml.Create(nil);
      lxml.ReadFromString(vxml);
      lnode := lxml.Root;
      if lnode <> nil then
      begin
        lnamels := TStringList.Create;
        GetXmlAllValues(lnamels,lnode,True);
        for i := 1 to vgrid.rowcount do
          for j := 1 to vgrid.colcount do
            vgrid.cells[j - 1, i - 1] := '';
        if lnamels.Count > 0 then
        begin
          vgrid.DefaultColWidth := 80;
          vgrid.DefaultRowHeight := 20;
          vgrid.Options := [goFixedVertLine,goFixedHorzLine,goVertLine,goHorzLine,goRangeSelect,goRowSizing,goColSizing];
          i := 1;
          for j := 0 to lnamels.Count - 1 do
          begin
            if vgrid.ColCount < j then
            vgrid.ColCount := vgrid.ColCount + 1;
            vgrid.Cells[i,0] := lnamels.Strings[j];
            Inc(i);
          end;
          llist := TsdNodeList.Create(False);
          ls := TStringList.Create;
          lnode.FindNodes(vkeynode, llist);
          k := 1;
          for i := 0 to llist.Count - 1 do
          begin
            lnode := llist[i];
            ls.Clear;
            GetXmlAllValues(ls,lnode);
            if vgrid.RowCount < i then
            vgrid.RowCount := vgrid.RowCount + 1;
            for j := 0 to vgrid.ColCount - 1 do
            begin
              vgrid.Cells[j,k] := ls.Values[vgrid.Cells[j,0]];
            end;
            inc(k);
          end;
          FreeAndNil(llist);
          FreeAndNil(ls);
          Result := True;
        end;
        FreeAndNil(lnamels);
      end;
      FreeAndNil(lxml);
    end;

    http://blog.csdn.net/y281252548/article/details/52527843

  • 相关阅读:
    python学习(二十三) String(下) 分片和索引
    python学习(二十二) String(上)
    微服务网关
    【转】linux 软连接 硬链接
    设计模式--观察者模式
    设计模式--策略模式
    ubuntu-server 安装redis
    【转】linux的hostname修改详解
    【转】ftp的两种模式
    【转】linux下find查找命令用法
  • 原文地址:https://www.cnblogs.com/findumars/p/6090935.html
Copyright © 2011-2022 走看看