我正在尝试将WikiMarkup数据转换为Confluence的基于XHTML的格式。我看到有两种不同的方法可以做同样的事情。
1)使用rest / XML基于Rpc的API convertWikiToStorageFormat(String token,String markup)来做同样的事情。 2)其他方法是使用WikiToXhtmlMigrator来执行相同的任务。由于我使用的是Confluence SDK,我选择第二种方式来做同样的事情。
public String getXHTMLConvertedTextFromWiki(String markupData){
String content = null;
try {
RenderContext renderContext = new RenderContext();
DefaultConversionContext defaultConversionContext = new DefaultConversionContext(renderContext);
ExceptionTolerantMigrator wikiToXhtmlMigrator = (ExceptionTolerantMigrator) ContainerManager.getComponent("wikiToXhtmlMigrator");
content = wikiToXhtmlMigrator.migrate(markupData, defaultConversionContext).getContent();
}catch(Exception e){
e.printStackTrace();
}
return content;
}
但总是,我得到例外:
[INFO] [talledLocalContainer] java.lang.NullPointerException
[INFO] [talledLocalContainer] at com.atlassian.confluence.content.render.xhtml.migration.WikiToXhtmlMigrator.migrate(WikiToXhtmlMigrator.java:57)
[INFO] [talledLocalContainer] at com.atlassian.confluence.content.render.xhtml.migration.WikiToXhtmlMigrator.migrate(WikiToXhtmlMigrator.java:69)
我试图通过在渲染上下文中设置All来推动渲染模式但是得到了相同的异常。
renderContext.pushRenderMode(RenderMode.ALL);
请让我知道此示例中的问题是什么,并显示正确的方法。
答案 0 :(得分:0)
能够通过以下代码将标记转换为Xhtml。
public String getXHTMLConvertedTextFromWiki(String wikiText){
String content = null;
try {
List<RuntimeException> exceptions = newArrayList();
XhtmlContent xhtmlContent = (XhtmlContent)ContainerManager.getComponent("xhtmlContent");
content = xhtmlContent.convertWikiToStorage(wikiText, new DefaultConversionContext(new PageContext()),exceptions);
for(RuntimeException e : exceptions){
log.error(e.getMessage());
}
}catch(Exception e){
e.printStackTrace();
}
return content;
}
请确保,如果从外部来源阅读,则在阅读页面标记数据时不应丢失换行符。