2011-09-26 59 views
3

VS2008中使用.NET 3.5 SP1我有一个XmlDocument的,并且试图写它到文件:XmlWriterSettings,XmlTextWriter,XmlWriter没有格式化输出?没有新的生产线,无压痕

using (XmlTextWriter tw = new XmlTextWriter(outXmlFileName, System.Text.Encoding.UTF8)) 
{ 
    tw.Formatting = Formatting.Indented; 
    tw.Indentation = 3; 
    tw.IndentChar = ' '; 
    tw.QuoteChar = '\''; 
    doc.Save(tw); 
} 

而且

XmlWriterSettings settings = new XmlWriterSettings(); 
settings.Indent = true; 
using (XmlWriter writer = XmlWriter.Create(outXmlFileName, settings)) 
{ 
    doc.Save(writer); 
} 

什么不清楚从文档,http://msdn.microsoft.com/en-us/library/kkz7cs0d.aspx ,是否如果我应该使用上面的.net 2的XmlWriter.Create(),无论如何无论哪种方式格式化输出!我刚刚得到的是在XmlDocument的实例:

<?xml version='1.0' encoding='utf-8'?> 
<root> 
<node1 /> 
<node2 value='Data' /> 
<node3 value='ID' /><node4><item> 
<from value='1 Jan 1870' /> 
<id value='PF' /> 
<to value='1 Jan 1940' /></item></node4> 
</root> 

我如何整理自己的XML写它从.net文件之前?

+0

在.NET 2.0及以上时,应使用'XmlWriter.Create'代替'新的XmlTextWriter()'。 –

回答

2

我得到了它会通过加载XML到第二个中介XmlDocument的情况下工作,所以它忘记了原来的白色空间:

  XmlWriterSettings settings = new XmlWriterSettings(); // http://msdn.microsoft.com/en-us/library/kkz7cs0d(VS.85).aspx 
      settings.Indent = true; 

      XmlDocument doc2 = new XmlDocument(); 
      doc2.LoadXml(doc.OuterXml); 

      using (XmlWriter writer = XmlWriter.Create(outXmlFileName, settings)) 
      { 
       doc2.Save(writer); 
      }