[英]How to output a generated HTML string to a textbox without paragraph formating [closed]
我在 WPF 應用程序中生成一個 HTML 字符串,並將其輸出到多行文本框。 現在 output 正在換行,但顯示為類似於段落。 我希望它顯示為 HTML 的格式。它甚至不必是非常好的格式,但至少不會顯示 HTML 的段落。
我怎樣才能做到這一點?
如果HTML是格式良好的XML,那么XElement.ToString()
方法將使用縮進和換行格式化:
try
{
formattedOutput = System.Xml.Linq.XElement.Parse(myHtmlString).ToString();
}
catch
{
// isn't well-formed xml
}
下面是一些將文本轉換為HTML的代碼,但您確實需要更好地解釋“格式化”的含義。
例如,您說您的輸入沒有換行符? 那怎么格式呢? 您是否想要知道在哪里插入換行符然后將輸入分解為段落?
如果您的HTML實際上是XHTML(也稱為XML),您應該能夠使用以下方法對其進行格式化:
http://www.yetanotherchris.me/home/2009/9/9/formatting-xml-in-c.html
您可以使用AngleSharp package 來完成此操作:
/// <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;
聲明在頂部。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.