Из того, что я вижу, вы загружаете документ дважды. Сначала вы делаете xmlD.Save()
для потока, который сохранит ваш документ в его исходной кодировке, затем вы записываете байтовый массив, полученный из того же документа, используя системную кодировку по умолчанию. Я подозреваю, что если вы просто сделаете что-то вроде:
XmlDocument xmlD = xmlDocument as XmlDocument;
Stream requestStream = ftpWReqUpload.GetRequestStream();
xmlD.Save(requestStream);
requestStream.Close();
это будет работать.
Редактировать: Я вижу, что @dasblinkenlight добавил ссылку на некоторый рабочий код в комментарии к вопросу, возможно, вы захотите взглянуть на это, чтобы получить представление о том, как обрабатывать ответ.