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

  • 相关阅读:
    深度学习100问
    BAT机器学习面试1000题系列
    深度学习项目——基于卷积神经网络(CNN)的人脸在线识别系统
    深入理解卷积层
    AI大道理头尾标识
    git-svn Manual Page
    收藏夹
    C语言 #、##、#@在#define中的用法
    ubuntu 编译安装自己的git-svn
    ALSA参考文档
  • 原文地址:https://www.cnblogs.com/findumars/p/6090935.html
Copyright © 2011-2022 走看看