Convierte XmlDocument a String

Así es como actualmente estoy convirtiendo XMLDocument a String

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

El problema con este método es que si tengo ((comillas) que tengo en atributos) se les escapa.

Por ejemplo:

   

Arriba está el XML esperado. Pero vuelve

   

Puedo hacer String.Replace “\” pero ¿está bien ese método? ¿Hay algún efecto secundario? ¿Funcionará bien si el XML contiene una “\”

No hay ninguna cotización Es solo el depurador VS. Intenta imprimir en la consola o guardar en un archivo y verás. Como nota al margen: siempre deseche los objetos desechables:

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

Suponiendo que xmlDoc es un objeto XmlDocument, ¿qué hay de malo con xmlDoc.OuterXml?

 return xmlDoc.OuterXml; 

La propiedad OuterXml devuelve una versión de cadena del xml.

Si está utilizando Windows.Data.Xml.Dom.XmlDocument versión de XmlDocument (utilizado en aplicaciones UWP por ejemplo), puede usar su yourXmlDocument.GetXml() para obtener el XML como una cadena.

Como un método de extensión:

 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; } } } } 

Ahora para usar simplemente:

 yourXmlDoc.AsString() 

" se muestra como \" en el depurador, pero los datos son correctos en la cadena y no necesita reemplazar nada. Intenta volcar tu cadena a un archivo y notarás que la cadena es correcta.