Есть ли быстрый способ отформатировать XmlDocument для отображения в C #? - PullRequest
5 голосов
/ 21 апреля 2009

Я хочу вывести свое свойство InnerXml для отображения на веб-странице. Я хотел бы видеть отступы от различных тегов. Есть ли простой способ сделать это?

Ответы [ 6 ]

18 голосов
/ 21 апреля 2009

Вот небольшой класс, который я собрал некоторое время назад, чтобы сделать именно это.

Предполагается, что вы работаете с XML в строковом формате.

public static class FormatXML
{
    public static string FormatXMLString(string sUnformattedXML)
    {
        XmlDocument xd = new XmlDocument();
        xd.LoadXml(sUnformattedXML);
        StringBuilder sb = new StringBuilder();
        StringWriter sw = new StringWriter(sb);
        XmlTextWriter xtw = null;
        try
        {
            xtw = new XmlTextWriter(sw);
            xtw.Formatting = Formatting.Indented;
            xd.WriteTo(xtw);
        }
        finally
        {
            if(xtw!=null)
                xtw.Close();
        }
        return sb.ToString();
    }
}
1 голос
/ 21 апреля 2009

Вы должны быть в состоянии сделать это с помощью средств форматирования кода. Сначала вам нужно будет html кодировать xml на страницу.

У Google есть хороший предварительный преобразователь , способный визуализировать XML, а также несколько языков программирования.

По сути, поместите ваш XML в предварительный тег, подобный этому:

<code><pre class="prettyprint"> 
    &lt;link href="prettify.css" type="text/css" rel="stylesheet" /&gt;
    &lt;script type="text/javascript" src="prettify.js">&lt;/script&gt;
0 голосов
/ 21 апреля 2009

Используйте XmlTextWriter с настройками XmlWriterSettings, чтобы отступ был включен. Вы можете использовать StringWriter как «временное хранилище», если хотите записать полученную строку на экран.

0 голосов
/ 21 апреля 2009

Проверьте бесплатное Actipro CodeHighlighter для ASP.NET - он может аккуратно отображать XML и другие форматы.

Или вас больше интересует форматирование XML? Затем взгляните на XmlTextWriter - вы можете указать такие вещи, как формат (отступ или нет) и уровень отступа, а затем записать свой XML, например, на. MemoryStream и считайте его оттуда в строку для отображения.

Марк

0 голосов
/ 21 апреля 2009

Если идентификация - ваша единственная команда, и если вы можете позволить себе запуск процесса xternall, вы можете обработать xml-файл с помощью HTML Tidy консольного инструмента (~ 100K).

Код:

tidy --input-xml y --output-xhtml y --indent "1" $(FilePath)

Затем вы можете отобразить строку с идентификатором на веб-странице, как только избавитесь от специальных символов.

Было бы также легко создать рекурсивную функцию, которая производит такой вывод - просто итерируйте узлы, начиная с корня, и введите следующий шаг рекурсии для дочернего узла, передавая идентификацию в качестве параметра для каждого нового вызова рекурсии.

0 голосов
/ 21 апреля 2009

Используйте Элемент управления веб-сервера XML для отображения содержимого XML-документа на веб-странице.

РЕДАКТИРОВАТЬ: вы должны передать весь XmlDocument в свойство Document элемента управления веб-сервера XML для его отображения. Вам не нужно использовать свойство InnerXml.

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