C# 将特殊字符转换为HTML实体,而不更改标记和参数

C# 将特殊字符转换为HTML实体,而不更改标记和参数,c#,asp.net,html-entities,freetextbox,C#,Asp.net,Html Entities,Freetextbox,我正在使用FreeTextBox编辑器获取用户创建的一些HTML。 这个编辑器的问题是,除了“”之外,它没有转换HTML实体中的特殊字符。我不能使用theHTML=Server.HtmlEncode(theHTML),因为它转换所有HTML,包括标记和参数,我不想创建一个不可完成的theHTML.Replace行列表 是否有其他函数或方法可用于转换为html实体,但仅限于标记之外?我建议使用Linq to Xml解析每个元素,并对每个元素和属性节点的值进行编码。我会设法想出一些代码,但是现在是星

我正在使用FreeTextBox编辑器获取用户创建的一些HTML。 这个编辑器的问题是,除了“”之外,它没有转换HTML实体中的特殊字符。我不能使用
theHTML=Server.HtmlEncode(theHTML)
,因为它转换所有HTML,包括标记和参数,我不想创建一个不可完成的
theHTML.Replace
行列表


是否有其他函数或方法可用于转换为html实体,但仅限于标记之外?

我建议使用Linq to Xml解析每个元素,并对每个元素和属性节点的值进行编码。我会设法想出一些代码,但是现在是星期五下午5点

如果在搜索了很多之后,您得到了一个混合的
,我发现我使用了FreeTextBox组件的错误属性。属性为ConvertHtmlSymbolsToHtmlCodes,必须为true


如果需要将代码插入XHTML页面,使用FormatHtmlTagsToXhtml也很有帮助,因为它使用了带有标记参数和引号的强验证。

为了确保我理解您的意思,您需要将保留的HTML字符(&,,,,,,,,,,…)转换为HTML实体,而不是“,”,'在标记本身正确吗?仅转换外部标记。literal<是唯一转义的!所以你唯一的问题就是没有符号?第二个正则表达式应该解决这个问题。
<(?!\w+(\s+\w+="[^"<]*")*\s*/?>|/\w+\s*>)
&(?!\w+;|#\d+;|#x[0-9A-Fa-f]+;)