1

我正在使用此处找到的 Atlassian Commonmark API将 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>
4

1 回答 1

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()

文档中有一个示例

于 2021-01-05T18:02:44.287 回答