如何将生成的HTML字符串输出到没有段落格式的文本框

本文关键字:段落 格式 文本 字符串 HTML 输出 | 更新日期: 2023-09-27 17:50:14

我正在WPF应用程序中生成一个HTML字符串,并将其输出到一个多行文本框中。现在输出是换行的,但显示的形式类似于一个段落。我希望它被显示为格式化的HTML。它甚至不必是非常好的格式,但至少不显示一段HTML。

我怎样才能做到这一点?

如何将生成的HTML字符串输出到没有段落格式的文本框

如果您的HTML是格式良好的XML,那么XElement.ToString()方法将使用缩进和换行进行格式化:

try
{
    formattedOutput = System.Xml.Linq.XElement.Parse(myHtmlString).ToString();
}
catch
{
    // isn't well-formed xml
}

你可以使用AngleSharp包来完成:

/// <summary>
/// Returns a formatted version of the specified HTML text (which will presumably be unformatted - e.g. all on one line).
/// Uses the AngleSharp library/package.
/// </summary>
public static String FormatHtmlText(String htmlText)
{
    try
    {
        var parser = new AngleSharp.Html.Parser.HtmlParser();
        using var document = parser.ParseDocument(htmlText);
        using var sw = new StringWriter();
        var formatter = new AngleSharp.Html.PrettyMarkupFormatter { Indentation = "    ", NewLine = Environment.NewLine };
        document.ToHtml(sw, formatter);
        return sw.ToString();
    }
    catch
    {
        return htmlText;
    }
}

StringWriter需要using System.IO;语句在顶部