Учитывая экземпляр 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 по той строке.
Я просто задавался вопросом, существует ли более подобный потоку способ сделать это, чем чтение всего содержания в память.
TextReader tr = new StringReader(xml.ToString());
Доброта,
Дэн
Я не пробовал, но есть Метод XNode.WriteTo (XmlWriter)
. Вы можете передать ему XmlTextWriter
, чтобы получить текстовое представление. Для написания этого, вероятно, потребуется немного больше кода
, но он должен быть более "потоковым", как вы просили: -)
[Изменить: ] Еще проще: есть метод XNode.CreateReader ()
, который дает вам XmlReader
. Вам просто нужно будет самостоятельно выполнить преобразование в текст.