Hallo zusammen!
Ich habe folgenden Beispiel als Zwischenlösung, aber ich denke es sollte doch die Möglichkeit mit Regulären Ausdrücken auch geben.
C
#include <File.au3>
#include <Array.au3>
#include <String.au3>
$XMLFileLink = FileOpenDialog("Select file", @ScriptDir, "Archive Files (*.xml)")
Local $hFileXML_InhaltKomplett = FileOpen($XMLFileLink, 1)
FileSetPos($hFileXML_InhaltKomplett, 0, $FILE_BEGIN)
Local $sFileXMLGelesen = FileRead($hFileXML_InhaltKomplett)
FileSetPos($hFileXML_InhaltKomplett, 0, $FILE_END)
FileClose($hFileXML_InhaltKomplett)
ConsoleWrite( "XML: " & @CRLF)
ConsoleWrite($sFileXMLGelesen)
ConsoleWrite(@CRLF & " ---- " & @CRLF)
Local $sSucheStart1 = 'Ralls'
Local $sSucheEnde1 = '</book>'
Local $sResult = Example_XML($sSucheStart1, $sSucheEnde1)
MsgBox(0, "Result", $sResult)
Func Example_XML($sSucheStart1, $sSucheEnde1)
Local $aStringResult1 = _StringBetween($sFileXMLGelesen, $sSucheStart1, $sSucheEnde1)
If @error Then
Return "nichts gefunden"
EndIf
Local $sStringResult1 = _ArrayToString($aStringResult1)
ConsoleWrite( "Result 1: " & @CRLF)
ConsoleWrite($sStringResult1)
ConsoleWrite(@CRLF & " ---- " & @CRLF)
Local $sSucheStart2 = '<value>(.*?)</value>'
;Local $sSucheEnd = '(?i)<value>(.*?)</value>'
;Local $sSucheResult = StringRegExp($sSucheStart, $sSucheEnd, $STR_REGEXPARRAYMATCH, $iOffset)
Local $sStringResult2 = StringRegExpReplace($sStringResult1, $sSucheStart2, '<value>12345.6789</value>')
ConsoleWrite( "Result 2: " & @CRLF)
ConsoleWrite($sStringResult2)
ConsoleWrite(@CRLF & " ---- " & @CRLF)
Local $sNeu = StringReplace($sFileXMLGelesen, $sStringResult1, $sStringResult2)
ConsoleWrite( "XML neu: " & @CRLF)
ConsoleWrite($sNeu)
ConsoleWrite(@CRLF & " ---- " & @CRLF)
Return $sNeu
EndFunc
Alles anzeigen