2012-03-13 89 views
0

我想對大量XAML文件做一些批量更改,並通過使用linq的XDocument進行連接來完成此操作。此工作正常,我可以添加新元素,但是我遇到問題壓痕:與XDocument縮進

文件裝載 「PreserveWhitseSpace」 因爲我需要保持的格式(因爲SVN的):

_xamlDocument = XDocument.Load(新StringReader(newContent),LoadOptions.PreserveWhitespace) ;

然後我加入一些元素,當我做我保存使用文件:

_xamlDocument.Save(StringWriter的,SaveOptions.None);

新加入的元素都沒有很好地縮進,這看起來並不很不錯(抱歉的格式,但在這裏,你會看到/ N串):

<?xml version=\"1.0\" encoding=\"utf-16\"?>\r\n<UserControl x:Class=\"Sonova.Chinook.UserInterface.Common.SimpleProgressView\" xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\" xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\" Content=\"{Binding}\">\r\n <UserControl.Resources>\r\n  \r\n <ResourceDictionary><ResourceDictionary.MergedDictionaries><ResourceDictionary Source=\"{ThemeDictionary AssemblyName=Cocoon.UserInterface}\" /><ResourceDictionary Source=\"/Cocoon.UserInterface;component/VisualResources/Controls/ContentControl.xaml\" /></ResourceDictionary.MergedDictionaries></ResourceDictionary></UserControl.Resources>\r\n <UserControl.Style>\r\n  <StaticResource ResourceKey=\"SimpleProgressStyle\" />\r\n </UserControl.Style>\r\n</UserControl> 

上面的XML顯示,有沒有換行或空格,例如用於以下元素:

<ResourceDictionary Source=\"{ThemeDictionary AssemblyName=Cocoon.UserInterface}\" /><ResourceDictionary 

我已經嘗試設置disableformating爲保存選項,但似乎沒有導致期望的結果。

任何想法? 最好的問候

+0

我發現這個額外的信息,但我正在尋找一種方法來保留空白,並很好地格式化新元素http://bytes.com/topic/net/answers/178641-xmltextwriter-formatting-preservewhitespace – ccg 2012-03-13 15:49:29

回答

0

有一個XDocument.Save()超載需要XmlWriter參數,而不是TextWriterXmlWriter.Settings屬性允許您控制縮進等內容。您應該使用XmlWriter來包裝您的基礎流(FileStream,MemoryStream等)。

+0

好吧我會試試看,謝謝你的提示。 – ccg 2012-03-13 15:52:18

+0

我試過它沒有成功,請你看看這裏:http://bytes.com/topic/net/answers/178641-xmltextwriter-formatting-preservewhitespace如果你仍然認爲它可能使用XMLSettings這樣做,什麼我需要指定嗎?我指定xmlSettings.Indent = true; – ccg 2012-03-13 16:02:06