这个问题在几年前就得到了回答,但我想为未来的访问者节省我必须花费的精力来弄清楚如何使用 Sweble。
您可以尝试他们网站上的文档,但我无法弄清楚。只需查看示例源代码。在 https://repo1.maven.org/maven2/org/sweble/wikitext/swc-example-basic/2.0.0/swc-example-basic-2.0.0-sources.jar 下载 swc-example-basic 的源 jar 并查看 App.java 和 TextConverter.java。
基本上,要解析页面并将其转换为另一种形式,您首先将以下依赖项添加到您的项目中:
<dependency>
<groupId>org.sweble.wikitext</groupId>
<artifactId>swc-engine</artifactId>
<version>2.0.0</version>
</dependency>
然后,执行以下操作:
public String convertWikiText(String title, String wikiText, int maxLineLength) throws LinkTargetException, EngineException {
// Set-up a simple wiki configuration
WikiConfig config = DefaultConfigEnWp.generate();
// Instantiate a compiler for wiki pages
WtEngineImpl engine = new WtEngineImpl(config);
// Retrieve a page
PageTitle pageTitle = PageTitle.make(config, title);
PageId pageId = new PageId(pageTitle, -1);
// Compile the retrieved page
EngProcessedPage cp = engine.postprocess(pageId, wikiText, null);
TextConverter p = new TextConverter(config, maxLineLength);
return (String)p.go(cp.getPage());
}
TextConverter 是一个您可以在我上面提到的示例中找到的类。自定义它以做任何你想做的事情。例如,以下确保所有粗体文本都被“**”包围:
public void visit(WtBold b)
{
write("**");
iterate(b);
write("**");
}
对于您将遇到的每种类型的元素,该类都有一堆访问方法。