• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

delphi如何将XML格式的字符串导入ClientDataSet中

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

  下面我写了一个公用函数:  
   
  uses   XMLDoc,   XMLIntf,msxml,msxmldom;  
   
   
  function   XMLToDataSet(strXML:WideString):TClientDataSet;  
  var  
      myDataSet:TClientDataSet;  
      s:string;  
      xdoc   :   IXMLDOMDocument;  
      xdn   :IXMLDOMNode;  
      xdns   :IXMLDOMNodeList;  
      i,j:integer;  
  begin  
  s:='<?xml   version="1.0"   encoding="gb2312"?>   <!--文档版本信息,   注释格式同HTML-->'  
  +'<data>'  
  +'<row>'  
  +'<id>11</id><name>AAA</name><sex>男9</sex><age>24</age>'  
  +'</row>'  
  +'<row>'  
  +'<id>12</id><name>BBB</name><sex>女8</sex><age>25</age>'  
  +'</row>'  
  +'<row>'  
  +'<id>13</id><name>CCC</name><sex>女7</sex><age>26</age>'  
  +'</row>'  
  +'<row>'  
  +'<id>4</id><name>DDD</name><sex>男6</sex><age>28</age>'  
  +'</row>'  
  +'</data>';  
  //上面的格式就是传递参数strXML:WideString的格式,必须用row节点  
  myDataSet   :=   TClientDataSet.Create(nil);  
  xdoc:=CreateDOMDocument();  
  xdoc.loadXML(StrXML);  
  //xdoc.load('c:\test.xml');  
  s:='';  
  xdn:=xdoc.documentElement;  
  xdns:=xdoc.selectNodes('//row');  
  try  
  begin  
          for   i:=0   to   xdns.item[0].childNodes.length-1   do  
          begin  
                  myDataSet.FieldDefs.Add(xdns.item[0].childNodes[i].nodeName,ftstring,1000);  
          end;  
          myDataSet.CreateDataSet;                     //建立  
          myDataSet.Active;  
   
          for   i:=0   to     xdns.length-1   do  
          begin  
                  myDataSet.Append;  
                  for   j:=0   to   xdns.item[i].childNodes.length-1   do  
                  begin  
                          myDataSet.FieldValues[xdns.item[i].childNodes[j].nodeName]:=xdns.item[i].childNodes[j].text;  
                  end;  
                  myDataSet.Post;  
          end;  
   
  end;  
      except  
      on   Ex:Exception   do  
      //ShowMessage(Ex.Message);  
      myDataSet:=nil;  
      end;  
   
      result:=myDataSet;  
   
  end;

鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap