You do not have trailing backslashes in your directory name variables.
$Dir="C:\path\Generate XML Files\"
$DirArch="C:\path\Archive\" #ftp server
So when you append the extension you are going to get "C:\path\Generate XML Files*.XML". I would expect that to be a problem.
Add the back slashes and in your foreach loop output the names of what you are processing. Verify that the names are correct.
$uriname = $ftp+$item.Name
"Uploading File={0} URI={1}" -f $item.FullName, $uriname
$uri = New-Object System.Uri($uriname)
$webclient.UploadFile($uri, $item.FullName)