C # или кодировщик кода JavaScript - PullRequest
4 голосов
/ 26 февраля 2010

В настоящее время я использую Подсветка синтаксиса для отображения сообщений XML или SOAP на странице. Это хорошо работает для сообщений, которые уже правильно отформатированы (разрывы строк, отступы и т. Д.). Но если бы у меня была строка XML вроде:

string xml = "<doc><object><first>Joe</first><last>Smith</last></object></doc>";

Я бы записал строку на страницу, а подсветка javascript будет правильно синтаксически выделять строку, но все будет в одной строке.

Есть ли в C # форматировщик строк или какая-то библиотека с подсветкой синтаксиса, которая имеет «умную» функцию отступа, которая вставляла бы разрывы строк, отступы и т. Д ...?

1 Ответ

2 голосов
/ 26 февраля 2010

Так как это строка, добавление разрывов строк и отступов изменило бы действительное значение переменной xml, то есть , а не , что вы хотите, чтобы ваш модуль форматирования кода!

Обратите внимание, что вы можете отформатировать XML в C # перед записью на страницу, например:

using System;
using System.IO;
using System.Text;
using System.Xml;

namespace XmlIndent
{
    class Program
    {
        static void Main(string[] args)
        {
            string xml = "<doc><object><first>Joe</first><last>Smith</last></object></doc>";
            var xd = new XmlDocument();
            xd.LoadXml(xml);
            Console.WriteLine(FormatXml(xd));
            Console.ReadKey();
        }


        static string FormatXml(XmlDocument doc)
        {
            var sb = new StringBuilder();
            var sw = new StringWriter(sb);
            XmlTextWriter xtw = null;
            using(xtw = new XmlTextWriter(sw) { Formatting = Formatting.Indented })
            {
                doc.WriteTo(xtw);
            }
            return sb.ToString();
        }
    }
}
...