Сохранить строку XML или XmlNode в текстовый файл в формате отступа? - PullRequest
5 голосов
/ 03 мая 2009

У меня есть строка XML, которая очень длинная в одной строке. Я хотел бы сохранить строку XML в текстовый файл в хорошем формате отступа:

<root><app>myApp</app><logFile>myApp.log</logFile><SQLdb><connection>...</connection>...</root>

Формат, который я предпочитаю:

<root>
   <app>myApp</app>
   <logFile>myApp.log</logFile>
   <SQLdb>
      <connection>...</connection>
      ....
   </SQLdb>
</root>

Какие библиотеки .Net доступны для C # для этого?

Ответы [ 2 ]

7 голосов
/ 03 мая 2009

Это будет работать для того, что вы хотите сделать ...

var samp = @"<root><app>myApp</app><logFile>myApp.log</logFile></root>";    
var xdoc = XDocument.Load(new StringReader(samp), LoadOptions.None);
xdoc.Save(@"c:\temp\myxml.xml", SaveOptions.None);

Тот же результат с пространством имен System.Xml ...

var xdoc = new XmlDocument();
xdoc.LoadXml(samp);
xdoc.Save(@"c:\temp\myxml.xml");
3 голосов
/ 03 мая 2009

Я предполагаю, что вы не имеете в виду, что у вас есть экземпляр System.String с некоторым XML-файлом, и я надеюсь, что вы не создадите его с помощью манипуляции со строками.

Тем не менее, все, что вам нужно сделать, это установить правильные настройки при создании вашего XmlWriter:

var sb = new StringBuilder();
var settings = new XmlWriterSettings {Indent = true};
using (var writer = XmlWriter.Create(sb, settings))
{
    // write your XML using the writer
}

// Indented results available in sb.ToString()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...