2011-09-26 58 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); 
      }