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.

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top