@novopashinmm

Получаю xml по url, как сохранить содержимое в новый xml файл, только чтобы структура не нарушилась?

Когда делаю так, структура нарушается

WebRequest request = WebRequest.Create(@"http://xml.weather.co.ua/1.2/forecast/27?dayf=5&userid=fdsf_com_ua&lang=ru");
			using (var response = request.GetResponse())
			{
				using (var stream = response.GetResponseStream())
				{
					if (stream != null)
						using (
							var reader = new StreamReader(stream))
						{
							//это для считывания xml файла
							using (var writer = new StreamWriter("weather.xml", false))
							{
								writer.Write(reader.ReadToEnd());
							}
						}
				}
			}


Когда так, то ничего не пишется

WebRequest request1 = WebRequest.Create(@"http://xml.weather.co.ua/1.2/forecast/27?dayf=5&userid=fdsf_com_ua&lang=ru");
			using (var response = request1.GetResponse())
			{
				using (var stream = response.GetResponseStream())
				{
					if (stream != null)
						using (
							var reader = new XmlTextReader(stream))
						{
							//это для считывания xml файла
							using (var writer = new XmlTextWriter("weather1.xml", Encoding.UTF8))
							{
								writer.WriteString(reader.ReadString());
							}
						}
				}
			}
  • Вопрос задан
  • 2732 просмотра
Пригласить эксперта
Ответы на вопрос 1
@mayorovp
По первому варианту - что означает "нарушается структура"? Не должна она нарушаться при посимвольном копировании. Однако, тут возможны проблемы с кодировками. Нужную кодировку надо определять либо по ContentType - либо по декларации xml.

По второму варианту - разумеется, это и не должно работать. Прочитайте в документации, что делает ReadString.

--

Теперь как надо сохранять xml. Вариант первый - просто побайтово. Используйте stream напрямую, не оборачивая его в StreamReader - а для записи используйте FileStream.

Вариант второй - загрузить поток в XmlDocument или XDocument на выбор, а потом сохранить.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы