C#中是否有工具/库/函数可以在不验证或整理输入的情况下对生成的HTML代码进行制表或缩进?
编辑:
缩进从JavaScript TextEditors生成的HTML代码,包括但不限于TinyMCE。没有HtmlTextWriter。不能指望有效的XML / XHTML / 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;
}
答案 0 :(得分:3)
您可能想重新考虑您的方法,插入换行符(和缩进)可能会导致严重的空白问题。
<span style="color:red">test</span><span>ing</span>
上面的html与你要将其转换为的html显示不同,渲染的html中会有额外的空格:testing
vs test ing
<span style="color:red">
test
</span>
<span>
ing
</span>
如果已经存在空格,则只应插入换行符。
答案 1 :(得分:2)
这可能是一个漫长的方式,但它是我能想到的唯一一件事。
使用sgml转换器将html转换为xml,即HtmlAgility或SgmlReader
然后您可以写出XmlTextWriter并在设置中指定要缩进的内容。