利用XE7的OmniXML完成XML文件的处理,支持跨平台

介绍了OmniXML作为XE7中新DOM的优势,并通过实例展示了使用Delphi进行XML文件的读取、创建与保存操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

OmniXML是XE7提供的新DOM,传说比ADOM还要快,实际操作确实如此,这次我们来做几个文件操作,

首先在控件页上加上TXMLDocument控件,然后给控件命名为XMLDoc,

修改DOMVendor属性为OmniXML即可完成,操作与原来一样,


另外还有MSXML和ADOM,MSXML只能在windows里面用,不能跨平台,就是说你的程序在Android或者iOS下可能出问题,虽然ADOM能够跨平台,但它的效率目前比较慢,下面是几个操作代码:

几个参数说明:

  1. AppPath  //可以由TPath.GetHomePath取出的,TPath为跨平台的路径生成函数  
  1. TPath.DirectorySeparatorChar  //路径分隔符,在windows是"\",在Android是"/"  
  1. AppParamFileName  //自己定义的放参数的文件名称  

读取XML文件:

  1. if TFile.Exists(AppPath+TPath.DirectorySeparatorChar+AppParamFileName) then  
  2.  begin  
  3.   
  4.    //加载XML文件  
  5.    XMLDoc.LoadFromFile(AppPath+TPath.DirectorySeparatorChar+AppParamFileName);  
  6.    XMLRoot := XMLDoc.DocumentElement;  
  7.   
  8.    if XMLRoot<>nil then  
  9.    begin  
  10.   
  11.      XMLNode := XMLRoot.ChildNodes['LoginInfo'];  
  12.   
  13.      if XMLNode<>nil then  
  14.      begin  
  15.        RememberMe := XMLNode.AttributeNodes['RememberMe'].NodeValue;  
  16.      end;  
  17.   
  18.    end;  
  19.   
  20.  end  
  21.  else  
  22.  begin  
  23.    //没找到文件则创建  
  24.    CreateAppParamFile;  
  25.    RememberMe := 0;  
  26.  end;  


创建XML文件:

  1. //XML初始化  
  2. XMLDoc.Active := True;  
  3. XMLDoc.Version := '1.0';  
  4. XMLDoc.Encoding := 'GB2312';  
  5.   
  6. //创建根节点  
  7. XMLRoot := XMLDoc.CreateNode('SoftPreferences');  
  8. XMLDoc.DocumentElement := XMLRoot;  
  9.   
  10. //创建节点  
  11. XMLNode := XMLDoc.CreateNode('LoginInfo');  
  12. XMLDoc.DocumentElement.ChildNodes.Add(XMLNode);  
  13. XMLNode.AttributeNodes.Add(XMLDoc.CreateNode('RememberMe',ntAttribute));  
  14. XMLNode.SetAttributeNS('RememberMe','',0);  
  15. ...  
  16.   
  17. XMLDoc.SaveToFile(AppPath+TPath.DirectorySeparatorChar+AppParamFileName);  
  18. XMLDoc.Active := False;  

保存XML文件:

  1. XMLDoc.LoadFromFile(AppPath+TPath.DirectorySeparatorChar+AppParamFileName);  
  2. XMLDoc.Active := True;  
  3. XMLRoot := XMLDoc.DocumentElement;  
  4.   
  5. if XMLRoot<>nil then  
  6. begin  
  7.   
  8.   XMLNode := XMLRoot.ChildNodes['LoginInfo'];  
  9.   
  10.   if XMLNode<>nil then  
  11.   begin  
  12.   
  13.     XMLNode.SetAttributeNS('RememberMe','',RememberMe);  
  14.   
  15.   end;  
  16.   
  17. end;  
  18.   
  19. XMLDoc.SaveToFile(AppPath+TPath.DirectorySeparatorChar+AppParamFileName);  
  20. XMLDoc.Active := False; 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值