Отступ с XDocument - PullRequest
       6

Отступ с XDocument

0 голосов
/ 13 марта 2012

Я пытаюсь сделать некоторые массовые изменения во многих файлах XAML, и я хочу сделать это, добавив их с помощью XDocument linq. Это работает нормально, и я могу добавлять новые элементы, однако у меня есть проблемы с отступом:

документ загружен с "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

Я уже пытался установить отключение форматирования в качестве параметра сохранения, но ни один из них не привел кон желал результата.

Есть идеи?С наилучшими пожеланиями

1 Ответ

1 голос
/ 13 марта 2012

Существует перегрузка XDocument.Save(), которая принимает аргумент XmlWriter вместо TextWriter. Свойство XmlWriter.Settings позволяет вам управлять такими вещами, как отступ. Вы должны использовать XmlWriter для переноса вашего основного потока (FileStream, MemoryStream и т. Д.).

...