如何读写XML文档节点值?
发布时间:2020-12-16 07:42:17 所属栏目:百科 来源:网络整理
导读:我想读取一些 XML文件的节点,并在一些自定义输入字段中显示它们的值.然后,用户可以根据需要更改值,并通过单击“下一步”按钮,这些值应保存回XML. 在InnoSetup脚本中怎么做? 使用 CreateOleObject 功能实例化标准的 MSXML2.DOMDocument COM对象.以下脚本显示
我想读取一些
XML文件的节点,并在一些自定义输入字段中显示它们的值.然后,用户可以根据需要更改值,并通过单击“下一步”按钮,这些值应保存回XML.
在InnoSetup脚本中怎么做?
使用
CreateOleObject 功能实例化标准的
MSXML2.DOMDocument COM对象.以下脚本显示如何从下面发布的XML文件中加载并保存单个节点的文本值(脚本本身受MSDN的示例启发):
[Setup] AppName=My Program AppVersion=1.5 DefaultDirName={pf}My Program DefaultGroupName=My Program UninstallDisplayIcon={app}MyProg.exe Compression=lzma2 SolidCompression=yes OutputDir=userdocs:Inno Setup Examples Output [Files] Source: "MyProg.exe"; DestDir: "{app}" Source: "MyProg.chm"; DestDir: "{app}" [Icons] Name: "{group}My Program"; Filename: "{app}MyProg.exe" [Code] var CustomEdit: TEdit; CustomPageID: Integer; function LoadValueFromXML(const AFileName,APath: string): string; var XMLNode: Variant; XMLDocument: Variant; begin Result := ''; XMLDocument := CreateOleObject('Msxml2.DOMDocument.6.0'); try XMLDocument.async := False; XMLDocument.load(AFileName); 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!' + #13#10 + GetExceptionMessage,MB_OK); end; end; procedure SaveValueToXML(const AFileName,APath,AValue: string); var XMLNode: Variant; XMLDocument: Variant; begin XMLDocument := CreateOleObject('Msxml2.DOMDocument.6.0'); try XMLDocument.async := False; XMLDocument.load(AFileName); if (XMLDocument.parseError.errorCode <> 0) then MsgBox('The XML file could not be parsed. ' + XMLDocument.parseError.reason,'XPath'); XMLNode := XMLDocument.selectSingleNode(APath); XMLNode.text := AValue; XMLDocument.save(AFileName); end; except MsgBox('An error occured!' + #13#10 + GetExceptionMessage,MB_OK); end; end; procedure InitializeWizard; var CustomPage: TWizardPage; begin CustomPage := CreateCustomPage(wpWelcome,'Custom Page','Enter the new value that will be saved into the XML file'); CustomPageID := CustomPage.ID; CustomEdit := TEdit.Create(WizardForm); CustomEdit.Parent := CustomPage.Surface; end; procedure CurPageChanged(CurPageID: Integer); begin if CurPageID = CustomPageID then CustomEdit.Text := LoadValueFromXML('C:Setup.xml','//Setup/FirstNode'); end; function NextButtonClick(CurPageID: Integer): Boolean; begin Result := True; if CurPageID = CustomPageID then SaveValueToXML('C:Setup.xml','//Setup/FirstNode',CustomEdit.Text); end; 以下是脚本中使用的XML文件: <?xml version="1.0" encoding="UTF-8"?> <Setup> <FirstNode>First node value!</FirstNode> <SecondNode>Second node value!</SecondNode> </Setup> (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |