Как я могу легко получить Textreader от XDocument?
-
25-09-2019 - |
Вопрос
Учитывая экземпляр 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
. Отказ Вы просто должны справиться с преобразованием, чтобы написать себе.