serr57 Posted June 16, 2010 Posted June 16, 2010 Hi everybody, I have to export a configuration text format, this is OK. This file have a lot of comments string, and I would like to suppress them, the syntax is <!-- "Comments" -->. This is the first step. Second step, is a lot of white space are present at the begin of the line, and I have to suppress them too. I know now how to suppress a line using this script: #include <Array.au3> #include <File.au3> Dim $sFile = "C:\TEMP\outputfile.xml" Dim $aLines _FileReadToArray($sFile, $aLines, $search) _ArrayDelete($aLines,2) FileDelete($sFile) For $i=1 to Ubound($aLines)-1 If $aLines[$i]<>"" Then FileWriteLine($sFile,$aLines[$i]) Next Exit But I don't know how to delete a line when a special string is present Could you help me ? or give to me a way ? Many thanks serr57
lordicast Posted June 16, 2010 Posted June 16, 2010 I wouldn’t call it XML manipulation, more like string parsing. If a comment begins With < ! - - "Comments" - - > find out what it ends With. This way you can get the positions of when To use String length To strip these comments. #include <Array.au3> #include <File.au3> Dim $sFile = "C:\TEMP\outputfile.xml" Dim $aLines _FileReadToArray($sFile, $aLines, $search) _ArrayDelete($aLines, 2) FileDelete($sFile) For $i = 1 To UBound($aLines) - 1 If $aLines[$i] <> "" Then ;Strips White Space $NewLine = StringStripWS($aLines[$i], 1) ;1 = strip leading white space ;2 = strip trailing white space ;4 = strip double (or more) spaces between words ;8 = strip all spaces (over-rides all other flags) ; ;-- Insert a parse for comments ; ;<!-- "Comments" --> is it? What closes comment? Syntax ; FileWriteLine($sFile, $NewLine) EndIf Next Exit ;Also find these in help for more ;StringTrimLeft ;StringTrimRight ;StringReplace [Cheeky]Comment[/Cheeky]
Juvigy Posted June 17, 2010 Posted June 17, 2010 include <Array.au3> #include <File.au3> Dim $sFile = "C:\TEMP\outputfile.xml" Dim $aLines _FileReadToArray($sFile, $aLines, $search) _ArrayDelete($aLines,2) FileDelete($sFile) For $i=1 to Ubound($aLines)-1 If $aLines[$i]<>"" AND StringInStr($aLines[$i],'<!-- "Comments" -->')=0 Then FileWriteLine($sFile,$aLines[$i]) Next
serr57 Posted June 17, 2010 Author Posted June 17, 2010 Hi, Thank you very much. I have to modify the script, and now it works here is it. #include <Array.au3> #include <File.au3> Dim $sFile = "C:\TEMP\outputfile.xml" Dim $aLines _FileReadToArray($sFile, $aLines) _ArrayDelete($aLines,2) FileDelete($sFile) For $i=1 to Ubound($aLines)-1 If $aLines[$i]<>"" Then FileWriteLine($sFile,$aLines[$i]) If $aLines[$i]<>"" Then FileWriteLine($sFile,$aLines[$i]) _Ltrim($sFile, $aLines) Next But now I have to delete white spaces at the begin of the line. I have tried with Tim function, but it doesn't match... Could help me ? serr57
Micha1405 Posted June 17, 2010 Posted June 17, 2010 Try this http://www.autoitscript.com/forum/index.php?showtopic=19848 My TrayToolBar
Juvigy Posted June 17, 2010 Posted June 17, 2010 @ serr57 , Did you check my example code? Your last post code wont work - try my example code... Also check the StringStripWS function help.
serr57 Posted June 17, 2010 Author Posted June 17, 2010 Try this http://www.autoitscript.com/forum/index.php?showtopic=19848 Hi, I have testing this script but some thing is wrong, I don't understand the reason why #include <Array.au3> #include <File.au3> Dim $sFile = "C:\TEMP\outputfile.xml" Dim $aLines _FileReadToArray($sFile, $aLines) _ArrayDelete($aLines,2) FileDelete($sFile) For $i=1 to Ubound($aLines)-1 If $aLines[$i]<>"" AND StringInStr($aLines[$i],'<!--')=0 Then FileWriteLine($sFile,$aLines[$i]) ;Delete all comments If $aLines[$i] <> "" Then $NewLine = StringStripWS($aLines[$i], 1) FileWriteLine($sFile, $NewLine) ;Delete only left white space EndIf Next Could explain to me the reason ?
Juvigy Posted June 17, 2010 Posted June 17, 2010 Try this: #include <Array.au3> #include <File.au3> Dim $sFile = "C:\TEMP\outputfile.xml" Dim $aLines _FileReadToArray($sFile, $aLines, $search) _ArrayDelete($aLines,2) FileDelete($sFile) For $i=1 to Ubound($aLines)-1 $aLines[$i]=StringStripWS($aLines[$i],3) If $aLines[$i]<>"" AND StringInStr($aLines[$i],'<!-- "Comments" -->')=0 Then FileWriteLine($sFile,$aLines[$i]) Next
serr57 Posted June 17, 2010 Author Posted June 17, 2010 Try this: #include <Array.au3> #include <File.au3> Dim $sFile = "C:\TEMP\outputfile.xml" Dim $aLines _FileReadToArray($sFile, $aLines, $search) _ArrayDelete($aLines,2) FileDelete($sFile) For $i=1 to Ubound($aLines)-1 $aLines[$i]=StringStripWS($aLines[$i],3) If $aLines[$i]<>"" AND StringInStr($aLines[$i],'<!-- "Comments" -->')=0 Then FileWriteLine($sFile,$aLines[$i]) Next Perfect, all is working well Many thanks for your help serr57
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now