InnoSetup XML操作函数

用于InnoSetup 5 以上。对XML文件的操作,简化InnoSetup XML访问过程。

1. [代码]InnoSetup 5 脚本    

{ ================================================================
  功能: 打开一个XML文档, 返回文档的Nodes对象
  参数: XMLFile     文档路径, 可以是有效的URL路径
        XMLRoot     文档的根节点对象
  返回: 无
}
procedure OpenXML(XMLFile: String; var XMLRoot: Variant);
var
	XMLDocument: Variant;
begin
  try
    XMLDocument := CreateOleObject('MSXML2.DOMDocument');
    XMLDocument.async := False;
    XMLDocument.resolveExternals := False;
    XMLDocument.load(XMLFile);
    XMLRoot := XMLDocument.documentElement;
  except
    RaiseException(ExpandConstant('{cm:LOADXMLFAILED}'));
  end;
end;


{ ================================================================
  功能: 在打开的XML文档中, 查找指定的节点
  参数: XMLNode   使用OpenXML打开的XML文档的节点
        Key       节点名字
        AttrName  节点属性名, 可以为空
        AttrValue 节点属性值, 可以为空
        FoundNode 找到的节点
  返回: 成功返回True 否则返回False
}
function FindXMLNodeByKey(XMLNode: Variant; KeyName: String; AttrName: String; AttrVal: String; var FoundNode: Variant) :Boolean;
var
  NodeIndex: Integer;
  Node: Variant;
begin
  Result := False;
  try
    if '' = AttrName then begin
      FoundNode := XMLNode.selectSingleNode(KeyName)
      Result := True;
    end else
      for NodeIndex := 0 to XMLNode.childNodes.length()-1 do begin
        Node := XMLNode.childNodes.item(NodeIndex);
        if (KeyName = Node.nodeName) and ( AttrVal = Node.Attributes.GetNamedItem(AttrName).value) then begin
            FoundNode := XMLNode.childNodes.item(NodeIndex);
            Result := True;
            break;
        end;
      end;
  except
    Result := False;
  end;
end;


{ ================================================================
  功能: 获取子节点的值
  参数: XMLNode   使用OpenXML打开的XML文档的节点
        Key       节点名字
  返回: 值, 获取失败时, 返回空
}
function GetXMLValue(XMLNode: Variant; KeyName: String) :String;
begin
  try
    Result := XMLNode.selectSingleNode(KeyName).text;
  except
    RaiseException(ExpandConstant('{cm:READXMLFAILED}'));
  end;
end;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值