我正在使用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>发布于 2021-01-06 02:02:44
也在找这个。我通过创建一个简单的自定义渲染器来实现它,该渲染器不渲染顶级<p>aragraphs。
它检查一个段落的父节点是否是Document节点,如果是,它只呈现该段落的子节点。
它扩展了默认渲染器(CoreHtmlNodeRenderer)以访问visitChildren()和visit(Paragraph)
在kotlin:
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()https://stackoverflow.com/questions/41876676
复制相似问题