Como posso facilmente obter um textreader de um XDocument?
-
25-09-2019 - |
Pergunta
Dada uma instância do XDocument, como posso facilmente obter um textreader que represente essa instância?
O melhor que pude criar é algo assim (onde xml
é uma instância do xdocument):
var s = new MemoryStream();
var sw = new StreamWriter(s);
xml.Save(sw);
sw.Flush();
s.Position = 0;
TextReader tr = new StreamReader(s);
No entanto, isso parece um pouco desajeitado, então eu queria saber se existe uma maneira mais fácil?
Editar
O exemplo acima é equivalente a converter a instância inteira em uma sequência XML e, em seguida, crie um textreader sobre essa string.
Eu estava me perguntando se há uma maneira mais semelhante a um fluxo do que ler todo o conteúdo na memória.
Solução
TextReader tr = new StringReader(xml.ToString());
Gentileza,
Dan
Outras dicas
Eu não tentei, mas há um método XNode.WriteTo(XmlWriter)
. Você poderia passar por um XmlTextWriter
para obter uma representação textual. Provavelmente, isso levará um pouco mais de código para escrever, mas deve ser mais "parecido com um fluxo" como você solicitou :-)
Editar:] Ainda mais fácil: há um método XNode.CreateReader()
que lhe dá um XmlReader
. Você só terá que lidar com a conversão para enviar uma mensagem de texto.