InnoSetup XML操作函数

简介: 用于InnoSetup 5 以上。对XML文件的操作,简化InnoSetup XML访问过程。 1. [代码]InnoSetup 5 脚本     { ================================================================ ...

用于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;
目录
相关文章
|
5月前
|
XML C# 数据格式
使用C#操作XML文件
使用C#操作XML文件
|
5月前
|
XML Java 开发工具
jdom操作xml实战
jdom操作xml实战
|
4月前
|
XML Java 数据格式
Spring5系列学习文章分享---第一篇(概述+特点+IOC原理+IOC并操作之bean的XML管理操作)
Spring5系列学习文章分享---第一篇(概述+特点+IOC原理+IOC并操作之bean的XML管理操作)
41 1
|
5月前
|
XML 存储 JavaScript
XML DOM 加载函数
`loadXMLString()`函数被封装在名为"loadxmlstring.js"的外部JavaScript文件中,用于加载XML文档。在示例HTML中,这个函数被调用来处理动态生成的XML字符串,该字符串描述了一本名为"Everyday Italian"的书籍信息。之后,可以在`code goes here.....`处进一步处理`xmlDoc`对象。
|
5月前
|
XML 存储 JavaScript
XML DOM 加载函数
`loadXMLDoc()` 是一个JavaScript函数,用于加载XML文档。它支持XMLHttpRequest和ActiveXObject,适应不同浏览器。函数定义存储在名为`loadxmldoc.js`的外部文件中,包含在HTML `<head>`标签内,然后在页面脚本中调用来获取XML数据,如`books.xml`。接下来的章节将介绍如何处理加载的数据。
|
5月前
|
XML 存储 JavaScript
深入学习 XML 解析器及 DOM 操作技术
所有主要的浏览器都内置了一个XML解析器,用于访问和操作XML XML 解析器 在访问XML文档之前,必须将其加载到XML DOM对象中 所有现代浏览器都有一个内置的XML解析器,可以将文本转换为XML DOM对象
112 0
|
5月前
|
XML Java 数据库连接
Mybatis之简介、使用操作(安装、XML、SqlSession、映射的SQL语句、命名空间、作用域和生命周期)
【1月更文挑战第2天】 MyBatis 是一款优秀的持久层框架 MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集的过程 MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 实体类 【Plain Old Java Objects,普通的 Java对象】映射成数据库中的记录。
153 2
Mybatis之简介、使用操作(安装、XML、SqlSession、映射的SQL语句、命名空间、作用域和生命周期)
|
XML Java 数据库连接
java202304java学习笔记第六十五天-ssm-声明式控制-基于xml的声明式配置-原始jdbc操作1
java202304java学习笔记第六十五天-ssm-声明式控制-基于xml的声明式配置-原始jdbc操作1
61 0
|
5月前
|
XML Java 数据库连接
* 完成单表操作:需要3个功能。 * 功能1:使用注解 * 功能2:通用Mapper * 功能3:使用xml
* 完成单表操作:需要3个功能。 * 功能1:使用注解 * 功能2:通用Mapper * 功能3:使用xml
114 0
|
12月前
|
XML 存储 JSON
【100天精通python】Day29:文件与IO操作_XML文件处理
【100天精通python】Day29:文件与IO操作_XML文件处理
91 0