我使用Atlassian Commonmark API here将Markdown解析为HTML。
工作得很漂亮,但往往会将<p
和</p>
添加到每个已解析字符串的开头和结尾。
过去是否有人广泛使用过该API,并且/或者知道如何让它停止这样做?
除了之后手动删除段落,也就是说,感觉......某种方式不洁净。
编辑以供澄清:转换后的代码片段适用于HTML表格,因此我不需要在它们之前和之后使用段落位。
Markdown输入可能是:
####Text for the table here.
我得到的输出是:
<p><h6>Text for the table here.</h6></p>
我想要的只是段落剪辑不添加:
<h6>Text for the table here.</h6>
答案 0 :(得分:0)
也在找这个。我通过创建一个不渲染顶级 <p>
aragraphs 的简单自定义渲染器来实现它。
它检查一个段落的父节点是否是 Document
节点,如果是,它只渲染段落的子节点。
它扩展了默认渲染器 (CoreHtmlNodeRenderer
) 以访问 visitChildren()
和 visit(Paragraph)
在科特林中:
class SkipParentWrapperParagraphsRenderer(val context: HtmlNodeRendererContext)
: CoreHtmlNodeRenderer(context), NodeRenderer {
override fun getNodeTypes(): Set<Class<out Node>> {
return setOf(Paragraph::class.java)
}
override fun render(node: Node) {
if (node.parent is Document) {
visitChildren(node)
} else {
visit(node as Paragraph)
}
}
}
注册新的渲染器:
val renderer: HtmlRenderer = HtmlRenderer
.builder()
.nodeRendererFactory { context -> SkipParentWrapperParagraphsRenderer(context) }
.build()