2017-02-09 114 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