Java的共同标志 - 我想渲染没有段落?

时间:2017-01-26 15:14:59

标签: java html markdown commonmark

我使用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>

1 个答案:

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

有一个 example in the documentation