在Java转换器中将Markdown限制为下划线/粗体/斜体

时间:2017-03-23 09:38:08

标签: java markdown wikitext

我正在寻找一种允许用户格式化文本的方法。格式仅限于:

  • 下划线
  • 斜体
  • 粗体
  • 枚举

我想使用Markdown并在服务器端将Markdown转换为HTML。

我的问题是Markdown支持的格式比我想要的多得多(标题,表格,......)。

你知道一个Markdown图书馆,我可以将白名单加下划线/斜体/粗体/...

如果没有白名单,我考虑用JSOUP清理生成的HTML。这是一种首选方式吗?

谢谢。

1 个答案:

答案 0 :(得分:0)

有几种不同的方法可以实现。您选择哪个取决于您使用的库(建议特定工具在StackOverflow上偏离主题)以及您正在寻找的行为。您可以在下面找到每种方法的摘要。

修改Markdown解析器。

某些解析器提供了一个API,允许您修改其行为。您也许可以删除解析表格,标题等的零碎文件,并将其余部分保留在原位。然后,您的最终输出将留下这些功能的任何Markdown语法。例如,如果作者键入标题,则会得到一个以哈希开头的段落。

创建自定义渲染器。

一些Markdown解析器分两步完成。在步骤1中,解析器获取Markdown文本并输出抽象语法树(AST),在步骤2中,渲染器接受AST并输出HTML。您可以修改默认渲染器,也可以构建自定义渲染器,根据需要处理每个元素。例如,您可以告诉"标题"用于输出段落(而不是标题)的渲染器方法,您可以选择该段落是否包含原始哈希值。

使用HTML Sanitizer。

使用您选择的Markdown解析器,传入文本并获取输出而不进行修改。然后将HTML输出传递给HTML清理程序,该清理程序将删除不在白名单中的任何标记。在这种情况下,将不知道标头曾经是标头。在最终输出中,它看起来就像一个常规段落。