2017-02-09 31 views
2

在Java应用程序中,我需要减价后的文本转换为简单的纯文本而不是HTML(例如删除所有链接地址,粗体和斜体标记)。使用flexmark-java的清洁降价

这是最好的方法吗?我正在考虑使用像fleaxmark这样的降价库。但我一见钟情就找不到这个功能。它在吗?还有其他更好的选择吗?

回答

1

编辑

Commonmark支持呈现到文本,通过使用org.commonmark.renderer.text.TextContentRenderer而不是默认的HTML渲染器。不知道它与换行符有什么关系,但值得一试。

原来的答复,使用flexmark HTML + JSoup


理想的解决办法是实施flexmark定制呈现,但是这将迫使你写一个模型到字符串为所有语言功能在降价。除非它支持开箱即用,但我不知道这个功能......

更简单的解决方案可能是使用flexmark(或任何其他轻量级markdown渲染器)并让它创建HTML。之后,只需通过https://jsoup.org/运行生成的HTML,让它提取文本:

Jsoup.parse(htmlInputStream).text(); 

字符串org.jsoup.nodes.Element.text() 获取此元素的复合文字及其所有子。空白符被标准化和修剪。

例如,假设HTML <p>Hello <b>there</b> now! </p>,p.text()返回Hello there now!

我们用这种方法获得的丰富的内容编辑器(summernote)输入文本的“预览”,后被消毒与org.owasp.html.HtmlSanitizer