2011-12-27 5 views
6

Sto tentando di scrivere una risposta XML per il mio servizio Web, tuttavia non riesco a capire come visualizzare la dichiarazione nella risposta.Come includere la dichiarazione con XElement.ToString()

Il mio codice è in questo modo:

StringBuilder sBuilder = new StringBuilder(); 
using (XmlWriter writer = XmlWriter.Create(sBuilder)) 
{ 
    writer.WriteStartDocument(); 
    writer.WriteStartElement("ReportResponse"); 
    Response.WriteXml(writer); 
    writer.WriteEndElement(); 
    writer.WriteEndDocument(); 
} 

var response = XElement.Parse(sBuilder.ToString()); 
return response; 

risposta è solo una POCO per la memorizzazione dei dati di risposta.

Sono consapevole che il metodo Save include la dichiarazione e il metodo ToString() non lo fa. Ho bisogno di scrivere la mia dichiarazione di nuovo con ToString().

Voglio solo restituire XML personalizzato dal mio servizio REST senza eseguire il casting della stringa 100 volte per restituire un XML valido. E 'anche possibile o sto semplicemente facendo girare le mie ruote?

+2

Perché non utilizzare una classe che si serializza in XML? – Maess

+0

Potrei usare questo approccio ma mi imbatto nello stesso problema per diversi motivi. – BentOnCoding

+0

Perché stai restituendo un 'XElement' e non un' XDocument' se vuoi la dichiarazione XML? – Jacob

risposta

0

Se si desidera includere dichiarazione XML, si può fare in questo modo:

XDocument xdoc = XDocument.Parse(xmlString); 
StringBuilder builder = new StringBuilder(); 
using (TextWriter writer = new StringWriter(builder)) 
{ 
    xdoc.Save(writer); 
} 
Console.WriteLine(builder); 

Aggiornamento: Ho notato, che codifica spoglie StringWriter. Quindi, un'altra opzione è:

string docWithDeclaration = xdoc.Declaration + xdoc.ToString(); 
Problemi correlati