C#工具:在将HTML字符串发送到客户端之前格式化该字符串

7

有没有一种C#工具可以在将由StringBuilder创建的大字符串传递给客户端之前对其进行格式化?

如果有一种工具可以在将HTML发送到客户端之前删除所有空格并将其最小化,那就太棒了。

1个回答

14

你可以使用Web Markup Minifier: Core来实现此操作。

要查看如何操作,请访问此链接

此外,还有其他的NuGet包可用于相同的目的,在这里可以找到它们。

using System;
using System.Collections.Generic;

using WebMarkupMin.Core;

namespace WebMarkupMin.Sample.ConsoleApplication
{
    class Program
    {
        static void Main(string[] args)
        {
    const string htmlInput = @"<!DOCTYPE html>
                                <html>
                                    <head>
                                        <meta charset=""utf-8"" />
                                        <title>The test document</title>
                                        <link href=""favicon.ico"" rel=""shortcut icon"" type=""image/x-icon"" />
                                        <meta name=""viewport"" content=""width=device-width"" />
                                        <link rel=""stylesheet"" type=""text/css"" href=""/Content/Site.css"" />
                                    </head>
                                    <body>
                                        <p>Lorem ipsum dolor sit amet...</p>

                                        <script src=""http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.9.1.min.js""></script>
                                        <script>
                                            (window.jquery) || document.write('<script src=""/Scripts/jquery-1.9.1.min.js""><\/script>');
                                        </script>
                                    </body>
                                </html>";

            var htmlMinifier = new HtmlMinifier();

            MarkupMinificationResult result = htmlMinifier.Minify(htmlInput,
                generateStatistics: true);
            if (result.Errors.Count == 0)
            {
                MinificationStatistics statistics = result.Statistics;
                if (statistics != null)
                {
                    Console.WriteLine("Original size: {0:N0} Bytes",
                        statistics.OriginalSize);
                    Console.WriteLine("Minified size: {0:N0} Bytes",
                        statistics.MinifiedSize);
                    Console.WriteLine("Saved: {0:N2}%",
                        statistics.SavedInPercent);
                }
                Console.WriteLine("Minified content:{0}{0}{1}",
                    Environment.NewLine, result.MinifiedContent);
            }
            else
            {
                IList<MinificationErrorInfo> errors = result.Errors;

                Console.WriteLine("Found {0:N0} error(s):", errors.Count);
                Console.WriteLine();

                foreach (var error in errors)
                {
                    Console.WriteLine("Line {0}, Column {1}: {2}",
                        error.LineNumber, error.ColumnNumber, error.Message);
                    Console.WriteLine();
                }
            }
            Console.ReadLine();
        }
    }
}

请不要回答离题问题。这只会鼓励更多的人提出离题问题。 - mason
你知道这个库对应的 NuGet 包是哪一个吗?我尝试了 TidyNetPortable,但好像不是它。 - Blake Rivell
当我使用它时,我将其作为dll而不是nuget包使用,因此您可以使用Web Markup Minifier: Core,我也会根据此编辑答案。 - rashfmnb

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接