Лучший способ предварительно оптимизировать XmlDocument (.NET)? - PullRequest
2 голосов
/ 21 июля 2009

Допустим, у меня есть 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 какой-то метод, который раньше не вызывал, но не смог его найти.

Ответы [ 3 ]

5 голосов
/ 21 июля 2009

В основном вы можете использовать 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 голосов
/ 21 июля 2009

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

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 голосов
/ 21 июля 2009

Попытка prettify XML похожа на нанесение помады на свинью :) Это все еще не будет красиво.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...