c# - pasar - string to xml
Convierte XmlDocument a String (5)
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()
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:
<Campaign name="ABC">
</Campaign>
Arriba está el XML esperado. Pero vuelve
<Campaign name=/"ABC/">
</Campaign>
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();
}
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.
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.
"
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.