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

来源:互联网 发布:js手机号正则表达式 编辑:程序博客网 时间:2024/05/01 05:01

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

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

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


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

几个参数说明:

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

读取XML文件:

[delphi] view plain copy
  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文件:

[delphi] view plain copy
  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文件:

[delphi] view plain copy
  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岁儿童偏胖怎么办 土地面积与实际面积不符怎么办 军转进省直单位双选失败怎么办 房改房楼龄到了70年怎么办 商品房房改房到70年后怎么办 公务员未享受房改政策怎么办 两套房改房违规怎么办 法院保全的物品在我家怎么办 西瓜视频答题结束了钱没提现怎么办 诚信答题密码忘了怎么办 我未成年杀了人怎么办 错过了网课考试怎么办? 2018广东省普法考试0分怎么办 小孩错过了小升初的考试怎么办 错过了自主招生考试怎么办?