使用XDocument缩进

时间:2012-03-13 15:37:10

标签: .net linq xaml indentation linq-to-xml

我正在尝试对许多XAML文件进行一些批量更改,并且我要通过使用linq的XDocument对它们进行调整来做到这一点。这很好,我可以添加新元素但是我有缩进问题:

文档加载了“PreserveWhitseSpace”,因为我需要保留格式(因为SVN):

  

_xamlDocument = XDocument.Load(new 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设置为保存选项,但似乎都没有导致所需的结果。

有什么想法吗? 最好的问候

1 个答案:

答案 0 :(得分:1)

XDocument.Save()的重载需要XmlWriter个参数而不是TextWriterXmlWriter.Settings属性允许您控制缩进等内容。您应该使用XmlWriter来封装基础流(FileStreamMemoryStream等)。