2013-08-29 59 views
12

我想從2改變的XDocument的默認縮進至3編寫XML時用於縮進字符數,但我不太清楚如何進行。如何才能做到這一點?如何改變用的XDocument

我熟悉XmlTextWriter並使用代碼,例如:

using System.Xml; 

namespace ConsoleApp 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      string destinationFile = "C:\myPath\results.xml"; 
      XmlTextWriter writer = new XmlTextWriter(destinationFile, null); 
      writer.Indentation = 3; 
      writer.WriteStartDocument(); 

      // Add elements, etc 

      writer.WriteEndDocument(); 
      writer.Close(); 
     } 
    } 
} 

對於我用XDocument,因爲它能更好地爲我實施類似於此另一個項目:

using System; 
using System.Collections.Generic; 
using System.Xml.Linq; 
using System.Xml; 
using System.Text; 

namespace ConsoleApp 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      // Source file has indentation of 3 
      string sourceFile = @"C:\myPath\source.xml"; 
      string destinationFile = @"C:\myPath\results.xml"; 

      List<XElement> devices = new List<XElement>(); 

      XDocument template = XDocument.Load(sourceFile);   

      // Add elements, etc 

      template.Save(destinationFile); 
     } 
    } 
} 
+0

'保存'需要'XmlWriter' ... - http://msdn.microsoft.com/en-us/library/bb336977.aspx –

回答

19

正如@約翰·桑德斯和@ sa_ddam213指出,new XmlWriter已被棄用,所以我挖得更深一些,並學會了如何使用XmlWriterSettings改變縮進。我從@ sa_ddam213獲得的using聲明想法。

我取代template.Save(destinationFile);下列要求:

XmlWriterSettings settings = new XmlWriterSettings(); 
settings.Indent = true; 
settings.IndentChars = " "; // Indent 3 Spaces 

using (XmlWriter writer = XmlTextWriter.Create(destinationFile, settings)) 
{      
    template.Save(writer); 
} 

這給了我所需要的3空間縮進。如果需要更多空間,只需將它們添加到IndentChars"\t"即可用於選項卡。

+0

+1,很好找,我刪除了我的,因爲我得到了很多否定性反饋,除了使用舊的'XmlTextWriter'外,您的解決方案是一個很好的解決方法 –