我正在尋找一種方法來允許用戶格式化他的文本。該格式限定爲:限制在Java轉換器中加下劃線/粗體/斜體
- 下劃線
- 斜體
- 大膽
- 枚舉
我想用降價和轉換降價成HTML服務器端。
我的問題是,Markdown支持更多的格式比我想允許(標題,表,..)。
你知道一個Markdown庫,我可以將白名單加下劃線/斜體/大膽/ ..嗎?
如果沒有白名單,我想清理JSOUP產生的HTML。這是一個首選的方式?
謝謝。
我正在尋找一種方法來允許用戶格式化他的文本。該格式限定爲:限制在Java轉換器中加下劃線/粗體/斜體
我想用降價和轉換降價成HTML服務器端。
我的問題是,Markdown支持更多的格式比我想允許(標題,表,..)。
你知道一個Markdown庫,我可以將白名單加下劃線/斜體/大膽/ ..嗎?
如果沒有白名單,我想清理JSOUP產生的HTML。這是一個首選的方式?
謝謝。
這可以通過幾種不同的方式來完成。您選擇哪個取決於您使用的庫(建議特定的工具不在StackOverflow中),以及您正在尋找什麼行爲。您可以在下面找到每種方法的摘要。
一些解析器提供了一個API,允許您修改它們的行爲。您也許可以刪除解析表格,標題等的零碎片段,然後將其餘部分留下。然後,您的最終輸出將保留這些功能的任何Markdown語法。例如,如果作者鍵入一個標題,他們將得到一個以散列開頭的段落。
一些Markdown解析器分兩步工作。在步驟1中,解析器採用Markdown文本並輸出一個抽象語法樹(AST),在步驟2中,渲染器接受AST並輸出HTML。您可以修改默認渲染器,也可以根據需要構建處理每個元素的自定義渲染器。例如,你可以告訴「header」渲染器方法輸出一個段落(而不是頭部),你可以選擇該段落是否包含原始哈希值。
使用您選擇的Markdown解析器,將文本傳入並獲取輸出而不進行修改。然後將HTML輸出傳遞給HTML清理程序,該清理程序將刪除不在白名單中的任何標記。在這種情況下,將不會有頭部曾經是頭部的線索。在最終的輸出中,它看起來像一個普通的段落。
一般情況下,這是通過HTML消毒器完成的。使用全功能的Markdown解析器,然後通過HTML清理器傳遞輸出,該清理器將所有未列入白名單的HTML標記去除。 – Waylan
@Waylan,你可以添加你的評論作爲答案。 –
@ Hal9k我已經添加了一個答案,它暗示了幾種不同的方法。 – Waylan