杉宫竹苑工作室

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1988|回复: 0

Inno Setup XML 操作函数

[复制链接]
发表于 2016-8-28 15:32:51 | 显示全部楼层 |阅读模式

正式会员享受无限制浏览网站功能和高速网盘下载,赶快加入本站吧!

您需要 登录 才可以下载或查看,没有账号?立即注册

x
  1. { ================================================================
  2.   功能: 打开一个XML文档, 返回文档的Nodes对象
  3.   参数: XMLFile     文档路径, 可以是有效的URL路径
  4.         XMLRoot     文档的根节点对象
  5.   返回: 无
  6. }
  7. procedure OpenXML(XMLFile: String; var XMLRoot: Variant);
  8. var
  9.     XMLDocument: Variant;
  10. begin
  11.   try
  12.     XMLDocument := CreateOleObject('MSXML2.DOMDocument');
  13.     XMLDocument.async := False;
  14.     XMLDocument.resolveExternals := False;
  15.     XMLDocument.load(XMLFile);
  16.     XMLRoot := XMLDocument.documentElement;
  17.   except
  18.     RaiseException(ExpandConstant('{cm:LOADXMLFAILED}'));
  19.   end;
  20. end;


  21. { ================================================================
  22.   功能: 在打开的XML文档中, 查找指定的节点
  23.   参数: XMLNode   使用OpenXML打开的XML文档的节点
  24.         Key       节点名字
  25.         AttrName  节点属性名, 可以为空
  26.         AttrValue 节点属性值, 可以为空
  27.         FoundNode 找到的节点
  28.   返回: 成功返回True 否则返回False
  29. }
  30. function FindXMLNodeByKey(XMLNode: Variant; KeyName: String; AttrName: String; AttrVal: String; var FoundNode: Variant) :Boolean;
  31. var
  32.   NodeIndex: Integer;
  33.   Node: Variant;
  34. begin
  35.   Result := False;
  36.   try
  37.     if '' = AttrName then begin
  38.       FoundNode := XMLNode.selectSingleNode(KeyName)
  39.       Result := True;
  40.     end else
  41.       for NodeIndex := 0 to XMLNode.childNodes.length()-1 do begin
  42.         Node := XMLNode.childNodes.item(NodeIndex);
  43.         if (KeyName = Node.nodeName) and ( AttrVal = Node.Attributes.GetNamedItem(AttrName).value) then begin
  44.             FoundNode := XMLNode.childNodes.item(NodeIndex);
  45.             Result := True;
  46.             break;
  47.         end;
  48.       end;
  49.   except
  50.     Result := False;
  51.   end;
  52. end;


  53. { ================================================================
  54.   功能: 获取子节点的值
  55.   参数: XMLNode   使用OpenXML打开的XML文档的节点
  56.         Key       节点名字
  57.   返回: 值, 获取失败时, 返回空
  58. }
  59. function GetXMLValue(XMLNode: Variant; KeyName: String) :String;
  60. begin
  61.   try
  62.     Result := XMLNode.selectSingleNode(KeyName).text;
  63.   except
  64.     RaiseException(ExpandConstant('{cm:READXMLFAILED}'));
  65.   end;
  66. end;
复制代码

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|手机版|Archiver|SgzyStudio

GMT+8, 2024-5-19 23:00 , Processed in 0.123236 second(s), 22 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表