如何使用Inno设置更新循环中的多个XML节点?

如何使用Inno设置更新循环中的多个XML节点?,xml,inno-setup,Xml,Inno Setup,我必须使用Inno设置更新多次出现的XML节点 如何做到这一点 例如:我必须更新节点(而我不知道有多少节点) id=5 gid=10 id=5 gid=10 谢谢这是@TLama从对 除了他的代码之外,这个版本还可以更新多个匹配XPath的节点。唯一的区别是调用selectNodes而不是selectSingleNode,以及以下for循环 过程SaveValueToXMLNodes(常量AFileName、APath、AValue:string); 变量 XMLDocument:变体; X

我必须使用Inno设置更新多次出现的XML节点

如何做到这一点

例如:我必须更新
节点(而我不知道有多少节点)


id=5 gid=10
id=5 gid=10

谢谢

这是@TLama从对

除了他的代码之外,这个版本还可以更新多个匹配XPath的节点。唯一的区别是调用
selectNodes
而不是
selectSingleNode
,以及以下
for
循环

过程SaveValueToXMLNodes(常量AFileName、APath、AValue:string);
变量
XMLDocument:变体;
XMLNodeList:变体;
索引:整数;
开始
XMLDocument:=CreateOleObject('Msxml2.DOMDocument.6.0');
尝试
XMLDocument.async:=False;
加载(AFileName);
如果XMLDocument.parseError.errorCode为0,则
开始
MsgBox('无法分析XML文件。'+
XMLDocument.parseError.reason,mbError,MB_OK)
结束
其他的
开始
setProperty('SelectionLanguage','XPath');
XMLNodeList:=XMLDocument.selectNodes(APath);
对于索引:=0到XMLNodeList.length-1 do
开始
XMLNodeList.item[Index]。文本:=AValue;
结束;
XMLDocument.save(文件名);
结束;
除了
MsgBox('发生错误!'+#13#10+GetExceptionMessage,mbError,MB#u OK);
结束;
结束;
对于输入文件,如:


id=5 gid=10
id=5 gid=10
您可以使用如下代码:

SaveValueToXMLNodes('servers.xml','/root/server/details','id=6 gid=11');
要获得:


id=6 gid=11
id=6 gid=11
<server name="A">
    <details>id=5 gid=10</details>
</server>

<server name="B">
    <details>id=5 gid=10</details>
</server>