制作 Bleach 以允许代码标签

Make Bleach to allow code tags

我正在尝试使用 bleach 转义 HTML 标签。它工作得很好,除非我试图插入一个被剪断的代码作为页面的内容。片段插入如下:

<pre>
<code>
 Code sample
</code>
</pre>

代码示例可能包含 html 个标签。如果标签在 <pre><code> 内,我怎样才能使漂白剂不转义标签?我知道我可以将一些标签列入白名单,但似乎没有办法将所有标签列入白名单,如果它们在代码块和黑名单中,那么在其他情况下。外部 html 标记由 Markdown 生成。

此外,bleach 会转义所有 < 和 > 符号,但如果它们出现在代码片段中,则看起来像这样:

for (auto a = 0; i &lt; 10; ++i)

如果漂白剂不能做到这一点,您能否建议另一个可以满足我需要的逃生者?

您想将

 的子标签列入白名单。从阅读文档中我可以推断,您必须一个接一个地定义要列入白名单的标签,或者使用可调用对象,每次遇到标签时都会调用可调用对象。</p>

<p>查看文档中名为:<a href="https://bleach.readthedocs.io/en/latest/clean.html#callable-filters" rel="nofollow noreferrer">Callable Filters</a></p> 的部分

<p>您的问题的一个可能解决方案是在 clean bleach.clean 上传递一个函数,该函数将检查 clean 方法遇到的标签是否是代码 html 标签的子标签。您必须在那里解析 HTML,您可以使用 HTML 解析器以及 <code>xml.eTree

TreeBuilder

这里是 example 不同的答案。