delphi读写XML的技巧


本文整理自网络,侵删。

 在delphi的单元文件中的Uses部分引入:xmldom, XMLIntf, msxmldom, XMLDoc。这是Delphi支持读写的几个单元文件。
然后具体的实例原码:
     procedure TForm1.LoadXML(filepath:string);
var
      AXMLDocument :TXMLDocument;
      i,nodecount:integer;
      rootnode,searchnode:IXMLNode;
      NodeName:String;
begin
      AXMLDocument:=TXMLDocument.Create(Application);
      AXMLDocument.FileName:=filepath;
      AXMLDocument.Active:=true;
      nodecount:=AXMLDocument.DocumentElement.ChildNodes['DB'].ChildNodes.Count;
      rootnode:=AXMLDocument.DocumentElement.ChildNodes['DB'];
      //showmessage('共有节点:'+IntToStr(nodecount)+'个');
      for i:=0 to nodecount-1 do
      begin
         //showmessage('第'+inttostr(i)+'个子节点的NodeName是:'+rootnode.ChildNodes.Get(i).NodeName);
         //showmessage('---------');
         //showmessage('第'+inttostr(i)+'个子节点的NodeValue是:'+rootnode.ChildNodes.Get(i).NodeValue);
         //由于节点不存在value所以出现错误
         NodeName:=rootnode.ChildNodes.Get(i).NodeName;
         if CompareStr(NodeName,'CONNECTION')=0 then
         begin
            //showmessage('找到节点');
            searchnode:=rootnode.ChildNodes.Get(i);
            form1.conf.dataBaseName:=searchnode.ChildNodes['ODBCNAME'].Text;
            form1.conf.password:=searchnode.ChildNodes['PASSWORD'].Text;
            form1.conf.username:=searchnode.ChildNodes['USERNAME'].Text;
            SetLength(form1.myDB,i+1);
            myDB[i]:=form1.conf;
            //showmessage('数据库配置的名字:'+searchnode.ChildNodes['ODBCNAME'].Text);
         end; 
      end;
      //showmessage('当前配置的数据连接个数为:'+inttostr(length(myDB)));
      FreeAndNil(AXMLDocument);
end;

Delphi将XML文档转化为树状节点结构,然后可以逐层访问。
主要是在读某个Node时候,可以根据节点所处的位置访问。
需要注意的是    nodecount:=AXMLDocument.DocumentElement.ChildNodes['DB'].ChildNodes.Count;
这个'DB'节点必须是整个XML根节点的子节点,如果是处于更深层的节点,则返回的节点是空。


将更新写入xml文件的方法:AXMLDocument.DocumentElement.ChildNodes[''].text:=Value;
                                            AXMLDocument.savetofile(XMLFileName);

相关阅读 >>

Delphi 文件路径相关的字符串操作

Delphi代码禁止窗体最大化

Delphi xe6 switch元件简繁问题

Delphi 数据类型cardinal 怎么转换成 string?

Delphi对access文件加密

Delphi 建立最小的应用程序

Delphi 动态更改webbrowser数据流内容

Delphi winapi: inflaterect - 改变矩形大小

Delphi 中流的使用通过内存流读取文件

Delphi inputbox 输入时显示*号

更多相关阅读请进入《Delphi》频道 >>



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...