Converti XmlDocument in stringa

Ecco come sto attualmente convertendo XMLDocument in String

StringWriter stringWriter = new StringWriter(); XmlTextWriter xmlTextWriter = new XmlTextWriter(stringWriter); xmlDoc.WriteTo(xmlTextWriter); return stringWriter.ToString(); 

Il problema con questo metodo è che se ho ((virgolette) che ho negli attributi) li sfugge.

Per esempio:

   

Sopra è l’XML previsto. Ma ritorna

   

Posso fare String.Replace “\” ma quel metodo va bene? Ci sono effetti collaterali? Funzionerà bene se l’XML stesso contiene un “\”

Non ci sono citazioni. È solo un debugger VS. Prova a stampare sulla console o salvare su un file e vedrai. Come nota a margine: disporre sempre oggetti monouso:

 using (var stringWriter = new StringWriter()) using (var xmlTextWriter = XmlWriter.Create(stringWriter)) { xmlDoc.WriteTo(xmlTextWriter); xmlTextWriter.Flush(); return stringWriter.GetStringBuilder().ToString(); } 

Supponendo che xmlDoc sia un object XmlDocument, cosa non va con xmlDoc.OuterXml?

 return xmlDoc.OuterXml; 

La proprietà OuterXml restituisce una versione stringa di xml.

Se si utilizza la versione Windows.Data.Xml.Dom.XmlDocument di XmlDocument (utilizzata, ad esempio, nelle app UWP), è ansible utilizzare il proprio yourXmlDocument.GetXml() per ottenere l’XML come stringa.

Come metodo di estensione:

 public static class Extensions { public static string AsString(this XmlDocument xmlDoc) { using (StringWriter sw = new StringWriter()) { using (XmlTextWriter tx = new XmlTextWriter(sw)) { xmlDoc.WriteTo(tx); string strXmlText = sw.ToString(); return strXmlText; } } } } 

Ora per usare semplicemente:

 yourXmlDoc.AsString() 

" è mostrato come \" nel debugger, ma i dati sono corretti nella stringa e non è necessario sostituire nulla. Prova a scaricare la tua stringa in un file e noterai che la stringa è corretta.