2009-05-03 11 views
5

Tengo una cadena xml que es muy larga en una línea. Me gustaría guardar la cadena XML en un archivo de texto en un formato de guión agradable:¿Guardar cadena xml o XmlNode en archivo de texto en formato de sangría?

<root><app>myApp</app><logFile>myApp.log</logFile><SQLdb><connection>...</connection>...</root> 

El formato prefiero:

<root> 
    <app>myApp</app> 
    <logFile>myApp.log</logFile> 
    <SQLdb> 
     <connection>...</connection> 
     .... 
    </SQLdb> 
</root> 

¿Cuáles son las bibliotecas .Net disponibles para C# para hacerlo?

Respuesta

7

Esto funcionará para lo que quieres hacer ...

var samp = @"<root><app>myApp</app><logFile>myApp.log</logFile></root>";  
var xdoc = XDocument.Load(new StringReader(samp), LoadOptions.None); 
xdoc.Save(@"c:\temp\myxml.xml", SaveOptions.None); 

Mismo resultado con el espacio de nombres System.Xml ...

var xdoc = new XmlDocument(); 
xdoc.LoadXml(samp); 
xdoc.Save(@"c:\temp\myxml.xml"); 
+0

¿dónde está el XDocument, me refiero al espacio de nombres? –

+0

System.Xml.Linq, pero básicamente puede hacer lo mismo con la clase XmlDocument. –

3

Supongo que no quiere decir que tiene una instancia de System.String con XML, y espero que no la cree mediante la manipulación de cadenas.

Dicho esto, todo lo que tiene que hacer es configurar los ajustes apropiados al crear su XmlWriter:

var sb = new StringBuilder(); 
var settings = new XmlWriterSettings {Indent = true}; 
using (var writer = XmlWriter.Create(sb, settings)) 
{ 
    // write your XML using the writer 
} 

// Indented results available in sb.ToString() 
Cuestiones relacionadas