;==========================================================================================================================================;; How to mass replace 'inner text' in specific keys in XML file? (6);; The 'FileRead' Version.;; (c)Detlev Dalitz.20111220.;==========================================================================================================================================;-----------------------------------------------------; Ini file "Config.ini".;; [IniFilePass]; C01_01=Pass; C01_02=Pass; C01_03=Pass; C01_04=Pass; D01_02=Pass; D01_03=Not Reporting; D01_04=Not Reporting; D01_05=Pass; E01_01=Pass; E01_02=Pass; E01_03=Confidential - Not Provided; E01_04=Pass; E01_05=Pass; E01_06=Pass; E01_07=Pass; E01_08=Not Reporting - Privileged Information; E01_09=Pass; E01_10=Pass;-----------------------------------------------------; Define working folder.strFolderHome=DirScript()DirChange(strFolderHome); Define data file pathes.strFileIni=strFolderHome:"Config.ini"strFileXmlIn=strFolderHome:"Data.in.xml"strFileXmlOut=strFolderHome:"Data.out.xml"; For sure, remove existing output file.If0!=FileExist(strFileXmlOut)ThenFileDelete(strFileXmlOut); Open ini file and get the keys.strIniSection="IniFilePass"arrKeys=Arrayize(IniItemizePvt(strIniSection,strFileIni),@TAB)ArraySort(arrKeys); Open output file.hdlFW=FileOpen(strFileXmlOut,"WRITE"); Read input xml line by line.intLastIC65=IntControl(65,4096,0,0,0); Set size of internal FileRead buffer.hdlFR=FileOpen(strFileXmlIn,"READ")While@TRUEstrLine=FileRead(hdlFR)IfstrLine=="*EOF*"ThenBreakIfstrLine!=""intPosABLeft=StrIndex(strLine,"<",1,@FWDSCAN)intPosABRight=StrIndex(strLine,">",intPosABLeft+1,@FWDSCAN)strKey=StrSub(strLine,intPosABLeft+1,intPosABRight-intPosABLeft-1)intIndex=ArraySearch(arrKeys,strKey,3)IfintIndex!=-1strValue=IniReadPvt(strIniSection,strKey,"Pass",strFileIni)IfstrValue!="Pass"; Do the replacements.strLine=StrSub(strLine,1,intPosABLeft-1):"<":strKey:">":strValue:"</":strKey:">"EndIfEndIfEndIfFileWrite(hdlFW,strLine)EndWhile; Close files.hdlFR=FileClose(hdlFR)hdlFW=FileClose(hdlFW); If this script has been called from another WB script, then return to the caller from here ...IfRtStatus()!=10ThenIfIntControl(77,80,0,0,0)>0ThenReturn; ... when not in WinBatch Studio debug mode.; Display result.ShellExecute(strFileXmlOut,"","",@NORMAL,""):CANCELExit