以缩进格式将xml字符串或XmlNode保存到文本文件中?

时间:2009-05-03 02:12:10

标签: c# .net xml

我有一个xml字符串,它在一行中很长。我想以一种漂亮的缩进格式将xml字符串保存到文本文件中:

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

我喜欢的格式:

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

C#可以使用哪些.Net库来执行此操作?

2 个答案:

答案 0 :(得分:7)

这适用于您想要做的事情......

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

与System.Xml命名空间相同的结果......

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

答案 1 :(得分:3)

我假设你并不是说你有一个带有一些XML的System.String实例,我希望你不要通过字符串操作来创建它。

那就是说,你要做的就是在创建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()