如何将wiki标记中包含宏的字符串转换为xhtml格式

时间:2015-01-09 09:16:17

标签: confluence

在从Confluence 3.5.13到Confluence 5.0.3的迁移过程中,我需要在我的MacroMigration类中将包含一些文本和宏的字符串转换为xhtml格式。

我尝试过以下代码:

    WikiStyleRenderer wikiStyleRenderer = (WikiStyleRenderer) ContainerManager.getComponent("wikiStyleRenderer");
    String result= wikiStyleRenderer.convertWikiToXHtml(new PageContext(context.getEntity()), body.getBody());

它适用于简单文字,但只要它包含对宏的引用(例如{info:title=int Random(int range)}{info}),结果就是换行符('\n')。

1 个答案:

答案 0 :(得分:0)

我已经成功使用com.atlassian.confluence.xhtml.api.XhtmlContent接口使它正常工作。这是我的做法:

private XhtmlContent xhtmlContent;

public void setXhtmlContent(XhtmlContent xhtmlContent) {
    this.xhtmlContent = xhtmlContent;
}

public MacroDefinition migrate(MacroDefinition macroDefinition,
        ConversionContext context) {
    MacroBody body = macroDefinition.getBody();
    List<RuntimeException> migrationExceptions = new ArrayList<RuntimeException>();
    String resultContent;

    resultContent = xhtmlContent.convertWikiToStorage(body.getBody(),
            context, migrationExceptions);

二传手setXhtmlContent()仅在此处供Confluence注入正确的实例。