html清理程序删除自定义标记并保留内部内容

时间:2015-09-22 09:06:20

标签: html tags

如何在以下示例中删除保留html内容的所有未知存在自定义标记:

<div>
  <h1>my header</h1>
  <custom:p>
     <h2>my Title</h2>
  </custom:p>
  <anothercustom:p>
     <h3>my SubTitle</h3>
  </anothercustom:p>
</div>

我想返回

<div>
  <h1>my header</h1>
  <h2>my Title</h2>
  <h3>my SubTitle</h3>
</div>

HTML清理程序有什么解决方案吗?

感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

您可以使用HtmlSanitizer.RemovingTag事件来保留代码的内容:

        var sanitizer = new HtmlSanitizer();

        sanitizer.RemovingTag += (sender, args) =>
        {
            args.Tag.OuterHtml = sanitizer.Sanitize(args.Tag.InnerHtml);
            args.Cancel = true;
        };

        var sanitized = sanitizer.Sanitize("<unknown>this will not be removed</unknown>");

答案 1 :(得分:1)

我一直在寻找同样的事情。我发现HtmlSanitizer在版本3.4.156中有一个KeepChildNodes选项,我正在使用它,这正是如此。

var sanitizer = new HtmlSanitizer();
sanitizer.KeepChildNodes = true;
sanitizer.Sanitize(html);