For Example:
#include <String.au3>
#include <Array.au3>
$iXML = '<?xml version="1.0"?>' & @CRLF & _
'<User>' & @CRLF & _
' <Theme>'&@CRLF & _
' <X>-4716</X>'&@CRLF & _
' <Y>-4815</Y>'&@CRLF & _
' <Z>12</Z>'&@CRLF & _
' </Theme>'&@CRLF & _
' <Theme>'&@CRLF & _
' <X>42</X>'&@CRLF & _
' <Y>328</Y>'&@CRLF & _
' <Z>36</Z>'&@CRLF & _
' </Theme>'&@CRLF & _
' <Theme>'&@CRLF & _
' <X>63</X>'&@CRLF & _
' <Y>256</Y>'&@CRLF & _
' <Z>78</Z>'&@CRLF & _
' </Theme>'&@CRLF & _
'</User>'
MsgBox(0,0,$iXML)
$Dis = iReadXML($iXML)
_ArrayDisplay($Dis,"Array",-1,0,"","|","|X|Y|Z")
$iXML = iAddTheme($iXML,"100","200",300)
MsgBox(0,0,$iXML)
$Dis = iReadXML($iXML)
_ArrayDisplay($Dis,"Array",-1,0,"","|","|X|Y|Z")
Func iReadXML($XML)
Local $u,$t,$Arr[1][3],$count=0
$u = _StringBetween($XML, "<User>", "</User>")
If Not @error Then
For $i=0 To UBound($u)-1
$t = _StringBetween($u[$i], "<Theme>", "</Theme>")
If Not @error Then
For $j=0 To UBound($t)-1
ReDim $Arr[$count+1][3]
$temp = _StringBetween($t[$j], "<X>", "</X>")
if Not @error Then $Arr[$count][0] = $temp[0]
$temp = _StringBetween($t[$j], "<Y>", "</Y>")
if Not @error Then $Arr[$count][1] = $temp[0]
$temp = _StringBetween($t[$j], "<Z>", "</Z>")
if Not @error Then $Arr[$count][2] = $temp[0]
$count +=1
Next
Else
SetError(1)
Return 0
EndIf
Next
Return $Arr
Else
SetError(1)
Return 0
EndIf
EndFunc
Func iAddTheme($XML,$X,$Y,$Z,$flag=1)
Local $newTheme
If $flag=1 Then
$newTheme = " "& "<Theme>" & @CRLF & " "&" "& "<X>" & $X & "</X>" & @CRLF & " "&" "& "<Y>" & $Y & "</Y>" & @CRLF & " "&" "& "<Z>" & $Z & "</Z>" & @CRLF & " "& "</Theme>" & @CRLF
Else
$newTheme = "<Theme>" & "<X>" & $X & "</X>" & "<Y>" & $Y & "</Y>" & "<Z>" & $Z & "</Z>" & "</Theme>"
EndIf
$XML = _StringInsert($XML,$newTheme,StringLen($XML)-7)
Return $XML
EndFunc