Скажем, у меня есть System.Xml.XmlDocument
, чей InnerXml
:
<comedians><act id="1" type="single" name="Harold Lloyd"/><act id="2" type="duo" name="Laurel and Hardy"><member>Stan Laurel</member><member>Oliver Hardy</member></act></comedians>
Я бы хотел отформатировать его, добавив новые строки и пробелы:
<comedians>
<act id="1" type="single" name="Harold Lloyd"/>
<act id="2" type="duo" name="Laurel and Hardy">
<member>Stan Laurel</member>
<member>Oliver Hardy</member>
</act>
</comedians>
Я просмотрел класс XmlDocument
для некоторого метода префиксации, но не смог найти его.
В основном вы можете использовать XmlDocument.Save(Stream)
и передавать любой поток в качестве цели для получения содержимого xml. Включая "только для памяти" StringWriter
, как показано ниже:
string xml = "<myXML>";
XmlDocument doc = new XmlDocument();
doc.LoadXml(xml);
using(StringWriter sw = new StringWriter())
{
doc.Save(sw);
Console.Write(sw.GetStringBuilder().ToString());
}
Обновление: использование блока
Джон Галлоуэй отправил ответ и удалил его, но это был лучший вариант для меня. Это выглядело примерно так:
StringBuilder Prettify(XmlDocument xdoc)
{
StringBuilder myBuf = new StringBuilder();
XmlTextWriter myWriter = new XmlTextWriter(new StringWriter(myBuf));
myWriter.Formatting = Formatting.Indented;
xdoc.Save(myWriter);
return myBuf;
}
Не нужно создавать объект XmlWriterSettings
.
Попытка префлотировать XML - это поместить помаду на свиньи:) Это все равно не будет красивым.
Почему вы пытаетесь его убрать? Если он предназначен для редактирования, Visual Studio делает довольно хорошую работу по представлению его в удобочитаемой форме. Если это для пользователя, то они могут предпочесть просто открыть их в своем предпочтительном редакторе или проводнике.