如何在Inno设置中根据子标记的值选择XML标记

如何在Inno设置中根据子标记的值选择XML标记,xml,inno-setup,pascal,pascalscript,Xml,Inno Setup,Pascal,Pascalscript,我试图在XML元素的子元素中搜索文本LIBRA ESTERLINA,并检索其他子元素的值。但我的质疑毫无结果 我的代码基于from和from 函数LoadValuesFromXMLMonedaFileName:string:Boolean; 变量 XMLNode:变体; XMLNodeList:变体; XMLDocument:变体; 索引:整数; id,moneda,dollar,abr,singPlur,字符:String; 开始 XMLDocument:=CreateOleObject'Ms

我试图在XML元素的子元素中搜索文本LIBRA ESTERLINA,并检索其他子元素的值。但我的质疑毫无结果

我的代码基于from和from

函数LoadValuesFromXMLMonedaFileName:string:Boolean; 变量 XMLNode:变体; XMLNodeList:变体; XMLDocument:变体; 索引:整数; id,moneda,dollar,abr,singPlur,字符:String; 开始 XMLDocument:=CreateOleObject'Msxml2.DOMDocument.6.0'; 尝试 XMLDocument.async:=False; XMLDocument.loadFileName; 如果XMLDocument.parseError.errorCode为0,则 开始 日志“无法分析XML文件”。+XMLDocument.parseError.reason; 结果:=假; 终止 其他的 开始 setProperty'SelectionLanguage','XPath'; XMLNodeList:= SelectNodes'//listaMonedas/item/moneda[text=LIBRA ESTERLINA]; 对于索引:=0到XMLNodeList.length-1 do 开始 xmlnodel:=XMLNodeList.item[索引]; id:=XMLNode.SelectSingleNode'id'。文本; moneda:=XMLNode.SelectSingleNode'moneda'。文本; 美元:=XMLNode.SelectSingleNode'dollar'。文本; abr:=XMLNode.SelectSingleNode'abr'.Text; singPlur:=XMLNode.SelectSingleNode'singPlur'.Text; 字符:=XMLNode.SelectSingleNode'caracter'。文本; MsgBoxid+moneda+dollar+abr+singPlur+caracter,MB信息,MB_OK; 终止 结果:=真; 终止 除了 日志“发生错误!”+1310+GetExceptionMessage; 结果:=假; 终止 终止 以下是XML:

1. 天秤座 0.7767 英镑 天秤座:天秤座 £ Base64Img Base64Img Base64Img 1. 墨西哥比索 18.7000 MXN 比索:比索 $ Base64Img Base64Img Base64Img 记住,我向您提出这个问题是为了更符合您的需要:

因此,您的XPath应该是:

XMLNodeList:= SelectNodes'//listaMonedas/item[moneda/text=LIBRA ESTERLINA]; 也就是说,您要选择包含moneda子标记和LIBRA ESTERLINA文本的item标记

另外,由于您只希望有一个匹配项,所以您应该使用SelectSingleNode,这样您的代码就会简单得多:

XMLNode:= XMLDocument.SelectSingleNode'//listaMonedas/item[moneda/text=LIBRA ESTERLINA]; id:=XMLNode.SelectSingleNode'id'。文本; moneda:=XMLNode.SelectSingleNode'moneda'。文本; 美元:=XMLNode.SelectSingleNode'dollar'。文本; abr:=XMLNode.SelectSingleNode'abr'.Text; singPlur:=XMLNode.SelectSingleNode'singPlur'.Text; 字符:=XMLNode.SelectSingleNode'caracter'。文本; MsgBoxid+moneda+dollar+abr+singPlur+caracter,MB信息,MB_OK;
多谢各位