delphi – 在inno脚本中使用Xpath读取xml文件

delphi – 在inno脚本中使用Xpath读取xml文件,第1张

概述我有这个inno脚本,我试图读取一个xml文件,并通过给用户更改为自定义输入的可能性来更改值. 这是我正在使用的代码: function LoadValueFromXML(const AFileName, APath: string): string;var XMLNode: Variant; XMLDocument: Variant; begin Result := ''; 我有这个inno脚本,我试图读取一个xml文件,并通过给用户更改为自定义输入的可能性来更改值.

这是我正在使用的代码:

function LoadValueFromXML(const Afile@R_404_6889@,APath: string): string;var  XMLNode: Variant;  XMLdocument: Variant;  begin  Result := '';  XMLdocument := CreateoleObject('Msxml2.DOMdocument.6.0');  try    XMLdocument.async := False;    XMLdocument.load(Afile@R_404_6889@);    if (XMLdocument.parseError.errorCode <> 0) then      MsgBox('The XML file Could not be parsed. ' +         XMLdocument.parseError.reason,mbError,MB_OK)    else    begin      XMLdocument.setProperty('SelectionLanguage','XPath');      XMLNode := XMLdocument.selectSingleNode(APath);      Result := XMLNode.text;    end;  except    MsgBox('An error occured!',MB_OK);  end;end;

这是调用上面的函数从XML加载值的代码

EditMailServerID.Text := LoadValueFromXML('C:\dnpr\ERPBO\Settings.xml','//settings/Mail/MailServer/');   EditMailServerUserID.Text := LoadValueFromXML('C:\dnpr\ERPBO\Settings.xml','//settings/Mail/User@R_404_6889@/');   EditMailServerPassword.Text := LoadValueFromXML('C:\dnpr\ERPBO\Settings.xml','//settings/Mail/Password/');   EditERPBOServicePath.Text := LoadValueFromXML('C:\dnpr\ERPBO\Settings.xml','//settings/default/ERPBOWebServicePath/');   EditERPHOServicePath.Text := LoadValueFromXML('C:\dnpr\ERPBO\Settings.xml','//settings/default/ERPHOWebServicePath/');   EditCustomerID.Text := LoadValueFromXML('C:\dnpr\ERPBO\Settings.xml','//settings/license/customernumber/');

示例xml代码是:

<?xml version="1.0" enCoding="utf-8"?><settings>   <default>    <ReadInvoicefile>0</ReadInvoicefile>    <HOUser>    </HOUser>    <HOShopNo>1</HOShopNo>    <LagerShop>500</LagerShop>    <SenderAddress>administrator@datanova.no</SenderAddress>    <HostID>192.168.6.155</HostID>    <PincodeDownloadfile@R_404_6889@>tilbud5.txt</PincodeDownloadfile@R_404_6889@>    <Printer@R_404_6889@ />    <UseAverageCostPrice>true</UseAverageCostPrice>    <ERPBOWebServicePath>http://localhost:90/FlisekompanIEtERPBOWebService/ERPBOService.asmx</ERPBOWebServicePath>    <ERPHOWebServicePath>http://localhost:90/FlisekompanIEtERPHOWebService/ERPHOService.asmx</ERPHOWebServicePath>     </default>  <license>    <customernumber>998877</customernumber>    <custID>532</custID>  </license>   <Mail>    <MailServer>dnserver.datanova.no</MailServer>    <User@R_404_6889@>sharma</User@R_404_6889@>    <Password>datanova123</Password>  </Mail>  <sms>    <provIDer>test</provIDer>    <sender@R_404_6889@>test</sender@R_404_6889@>    <user@R_404_6889@>test</user@R_404_6889@>    <password>test</password>  </sms> </settings>

我在以下位置收到运行时错误:

XMLdocument.setProperty('SelectionLanguage','XPath');      XMLNode := XMLdocument.selectSingleNode(APath);
解决方法 调用函数时,在XPath表达式的末尾有一个额外的/斜杠.只需删除它们即可让它运行起来.这是修复:

EditMailServerID.Text := LoadValueFromXML('C:\dnpr\ERPBO\Settings.xml','//settings/Mail/MailServer');EditMailServerUserID.Text := LoadValueFromXML('C:\dnpr\ERPBO\Settings.xml','//settings/Mail/User@R_404_6889@');EditMailServerPassword.Text := LoadValueFromXML('C:\dnpr\ERPBO\Settings.xml','//settings/Mail/Password');EditERPBOServicePath.Text := LoadValueFromXML('C:\dnpr\ERPBO\Settings.xml','//settings/default/ERPBOWebServicePath');EditERPHOServicePath.Text := LoadValueFromXML('C:\dnpr\ERPBO\Settings.xml','//settings/default/ERPHOWebServicePath');EditCustomerID.Text := LoadValueFromXML('C:\dnpr\ERPBO\Settings.xml','//settings/license/customernumber');
总结

以上是内存溢出为你收集整理的delphi – 在inno脚本中使用Xpath读取xml文件全部内容,希望文章能够帮你解决delphi – 在inno脚本中使用Xpath读取xml文件所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/langs/1243143.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-06
下一篇2022-06-06

发表评论

登录后才能评论

评论列表(0条)

    保存