Проблема с загрузкой XML из памяти - PullRequest
0 голосов
/ 18 сентября 2011

Вот мой код:

MemoryStream xmlStream = new MemoryStream();
XmlDocument xmlDoc = new XmlDocument();
XmlWriter xmlWriter = XmlWriter.Create(xmlStream);

//Add some elements and attributes.

xmlWriter.WriterEndDocument();
xmlWriter.Flush();
xmlWriter.Close();

Хорошо, теперь, когда я закрыл XmlWriter, есть ли способ снова получить доступ к XmlStream?

Если я не закрываюсь, тогда, когда я хочу использовать xmlDoc.Load (xmlStream), он выдает исключение, которое говорит: «Корневой элемент отсутствует»

Ответы [ 4 ]

5 голосов
/ 18 сентября 2011

Если вы не закрываете поток, вы можете установить для свойства Position значение 0, чтобы вернуться к началу, а затем создать XmlReader для чтения потока назад или использовать XmlDocument.Load, как вы пытаетесь это сделать.

Чтобы подвести итог, удалите xmlWriter.Close () и затем вызовите xmlStream.Position = 0, затем вызовите xmlDoc.Load (xmlStream)

4 голосов
/ 18 сентября 2011

Не как поток, но вы можете получить данные.

MemoryStream.ToArray работает даже после того, как вы его закрыли.

1 голос
/ 18 сентября 2011

Нет, вы больше не можете получить доступ к удаленному (закрытому) объекту (потоку).

1 голос
/ 18 сентября 2011

Нет, если вы хотите получить доступ к базовому потоку дальше, вам не следует закрывать XmlWriter, поскольку его закрытие фактически означает закрытие базового потока. Вы можете избавиться от потока после того, как закончите, используя:

xmlStream.Dispose();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...