Лучший способ предварительно оптимизировать XmlDocument (.NET)?

2

Скажем, у меня есть 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 для некоторого метода префиксации, но не смог найти его.

  • 1
    Небольшое редактирование: лучший способ сделать это в C #, вероятно, также лучший способ в VB.NET.
Теги:

3 ответа

5
Лучший ответ

В основном вы можете использовать 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());
}

Обновление: использование блока

  • 0
    Вы это проверяли? Это отступы? Также -1 за отсутствие использования блоков.
  • 0
    Вы должны попробовать это, прежде чем спрашивать, и уделять больше внимания, прежде чем понижать голос ...
Показать ещё 6 комментариев
0

Джон Галлоуэй отправил ответ и удалил его, но это был лучший вариант для меня. Это выглядело примерно так:

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.

  • 0
    Да, но он был неправ по двум другим причинам, поэтому он удалил его. Не используйте XmlTextWriter. Также вам нужно использовать блоки. Оказывается, что XmlDocument.Save сам по себе - все, что вам нужно для отступа.
  • 0
    Что именно происходит, если я не использую?
Показать ещё 1 комментарий
-1

Попытка префлотировать XML - это поместить помаду на свиньи:) Это все равно не будет красивым.

Почему вы пытаетесь его убрать? Если он предназначен для редактирования, Visual Studio делает довольно хорошую работу по представлению его в удобочитаемой форме. Если это для пользователя, то они могут предпочесть просто открыть их в своем предпочтительном редакторе или проводнике.

  • 3
    Отладка вывода.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню