Вопрос

Учитывая экземпляр XDocent, как я могу легко получить Textreader, который представляет этот экземпляр?

Лучшее, что я смог придумать, это что-то подобное (где xml Экземпляр XDocument):

var s = new MemoryStream();
var sw = new StreamWriter(s);

xml.Save(sw);

sw.Flush();
s.Position = 0;

TextReader tr = new StreamReader(s);

Тем не менее, это кажется немного неуклюжем, поэтому мне было интересно, есть ли проще?


Редактировать

Приведенный выше пример эквивалентен преобразованию всего экземпляра на строку XML, а затем создать Textreader через эту строку.

Мне просто интересно, есть ли более поток способа, чтобы сделать это, чем читать все содержимое в память.

Это было полезно?

Решение

  TextReader tr = new StringReader(xml.ToString());

Доброта,

Дэн

Другие советы

Я не пробовал, но есть метод XNode.WriteTo(XmlWriter). Отказ Вы могли бы передать это XmlTextWriter получить текстовое представление. Это, вероятно, займет несколько большего количества, чтобы написать, но это должно быть более «подобным потоковым», как вы запросили :-)

Редактировать:] Еще проще: есть метод XNode.CreateReader() что дает вам XmlReader. Отказ Вы просто должны справиться с преобразованием, чтобы написать себе.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top