No_*_*ame 5 java api parsing mediawiki
有一个很好的解析器的任何想法,易于使用api可配置?我正在寻找它的数据,如http://wikitravel.org/wiki/en/api.php?format=xml&action=parse&prop=wikitext&page=San%20Francisco,选择我想要的数据部分,并输出自定义html每种独特的元素类型?Java将是首选,但如果有一个php/js解决方案与大多数(99%+)wikitext兼容,那也没关系.
Hap*_*eer 10
这个问题在几年前得到了解答,但我想为未来的访问者节省我必须采取的努力来弄清楚如何使用Sweble.
您可以在他们的网站上试用文档,但我无法弄清楚.只需看看示例源代码.在https://repo1.maven.org/maven2/org/sweble/wikitext/swc-example-basic/2.0.0/swc-example-basic-2.0.0-sources下载swc-example-basic的源代码包.jar并查看App.java和TextConverter.java.
基本上,要解析页面并将其转换为另一个表单,首先要将以下依赖项添加到项目中:
<dependency>
<groupId>org.sweble.wikitext</groupId>
<artifactId>swc-engine</artifactId>
<version>2.0.0</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)
然后,执行以下操作:
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());
}
Run Code Online (Sandbox Code Playgroud)
TextConverter是一个你可以在我上面提到的例子中找到的类.自定义它可以做任何你想做的事情.例如,以下内容确保所有粗体文本都被"**"包围:
public void visit(WtBold b)
{
write("**");
iterate(b);
write("**");
}
Run Code Online (Sandbox Code Playgroud)
对于您将遇到的每种类型的元素,该类上有一堆访问方法.
归档时间: |
|
查看次数: |
6489 次 |
最近记录: |