Как я могу легко получить TextReader от XDocument?

Учитывая экземпляр XDocument, как я могу легко получить 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 по той строке.

Я просто задавался вопросом, существует ли более подобный потоку способ сделать это, чем чтение всего содержания в память.

5
задан Mark Seemann 9 April 2010 в 14:44
поделиться

2 ответа

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

Доброта,

Дэн

4
ответ дан 15 December 2019 в 00:55
поделиться

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

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

0
ответ дан 15 December 2019 в 00:55
поделиться
Другие вопросы по тегам:

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