C# 中是否有工具/库/函数可以在不验证或整理输入的情况下对生成的 html 代码进行制表符或缩进?
编辑:
缩进从 JavaScript 文本编辑器(包括但不限于 TinyMCE)生成的 HTML 代码。没有 HtmlTextWriter。不能期望有效的 XML/XHTML/HTML 代码。
要求:
- 在开始和结束标记之前和之后添加新行。
- 缩进标签内的内容(制表符或 4 个空格)。
- 将长行(有 N 个单词)拆分为多个缩进行。
- 即使输入不是有效的 HTML,也不要更改它。仅制表符/缩进和分割长行。
到目前为止,我已经:
private string FormatHtml(string input)
{
//Opening tags
Regex r = new Regex("<([a-z]+) *[^/]*?>");
string retVal = string.Empty;
retVal = r.Replace(input, string.Format("$&{0}\t", Environment.NewLine));
//Closing tags
r = new Regex("</[^>]*>");
retVal = r.Replace(retVal, string.Format("{0}$&{0}", Environment.NewLine));
//Self closing tags
r = new Regex("<[^>/]*/>");
retVal = r.Replace(retVal, string.Format("$&{0}", Environment.NewLine));
return retVal;
}
最佳答案
您可能需要重新考虑您的方法,插入换行符(和缩进)可能会导致严重的空白问题。
<span style="color:red">test</span><span>ing</span>
上面的 html 的显示效果与您要转换的 html 不同,渲染的 html 中会有额外的空格:testing
与 test ing
<span style="color:red">
test
</span>
<span>
ing
</span>
只有在已经存在空格的情况下才应插入换行符。
关于C# 制表符/缩进 HTML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9230793/