Xwiki不愧是最适合工程师用的企业内部知识管理系统:导入MediaWiki内容到XWiki

Groovy script

 

import org.dom4j.io.SAXReader
import org.dom4j.*
import groovy.net.xmlrpc.*
import java.net.ServerSocket

import org.wikimodel.wem.mediawiki.MediaWikiParser
import org.wikimodel.wem.xwiki.*

class PruningPageHandler implements ElementHandler {
def proxy, token;
def counter = 0;
def max = 10000;

PruningPageHandler(proxy, token) {
this.proxy = proxy
this.token = token
}
   def messages = []

    public void onStart(ElementPath path) { }
    public void onEnd(ElementPath path) {
       
    def page = path.current
       def title = page.elementText('title')
        title = title.replaceAll(' ','_')
       def id = page.elementText('id')
       
        println(title+ '('+counter+')')
       def revision = page.element('revision')
       def revid = revision.elementText('id');
       def revtext = revision.elementText('text');
       def contributor = revision.element('contributor')
def username = contributor.elementText('username')

       def index = revtext.substring(0, Math.min(30,revtext.length())).toLowerCase().indexOf("redirect")
       
        counter++;
       if (counter <</span> max && index <</span> 0) {


        revtext = revtext.replaceFirst("^-", "*");
        revtext = revtext.replaceAll("__","")  
        revtext = revtext.replaceAll("[\\|][\\+]","")
def buffer = new StringBuffer()
buffer.append(revtext)
       try {
def reader = new StringReader(revtext);
       def parser = new MediaWikiParser();
        buffer = new StringBuffer()
        def listener = new XWikiSerializer(buffer);
        parser.parse(reader, listener);
} catch (Exception e) {
println(e.getMessage())
}
       def map = new HashMap()
       map.put('content', buffer.toString())
map.put('modifier', username)
       map.put('space','Wikipedia')
       map.put('title',title)
try {      
proxy.confluence1.storePage(token, map)
} catch (Exception e) {
println(e.getMessage())

}

       
         }        
         page.detach() // prune the tree
    
   
       
    }
}

def server = new XMLRPCServer()
def proxy = new XMLRPCServerProxy("http://xwikiserver/xwiki/xmlrpc/confluence")
def token = proxy.confluence1.login("","")  



def reader  = new SAXReader()
def handler = new PruningPageHandler(proxy, token)

File f = new File("/home/slauriere/enwiki-20070908-pages-articles.xml.bz2.1.out")

FileInputStream fis = new FileInputStream(f);
reader.addHandler('/mediawiki/page', handler)
reader.setEncoding('UTF-8')
reader.read(fis)

Wiki Logo

 

Mongoose集成服务

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值