2013-05-07 84 views

回答

7

儘管您總是可以使用code Ant Scripts and launch them from Java,但下面是我剛剛寫的一個完整的實用程序類,它可讓您通過註冊到WikiText獨立部署的各種核心語言轉換維基文本。

值得注意的是,做最簡單的事情是download the Standalone Deployment,展開它,並通過API讀,看你需要什麼申請其他配置。

轉換wikitext的爲HTML

package com.stackoverflow.mylyn; 

import java.io.StringWriter; 
import java.util.Set; 
import java.util.TreeSet; 

import org.eclipse.mylyn.wikitext.core.parser.MarkupParser; 
import org.eclipse.mylyn.wikitext.core.parser.builder.HtmlDocumentBuilder; 
import org.eclipse.mylyn.wikitext.core.parser.markup.MarkupLanguage; 
import org.eclipse.mylyn.wikitext.core.util.ServiceLocator; 

/** 
* Utility to parse Wiki Text of varying languages and convert to HTML. 
*/ 
public final class ParseWikiToHTMLUtility { 

    public static final String NAME_TEXTILE = "Textile"; 
    public static final String NAME_TRACWIKI = "TracWiki"; 
    public static final String NAME_MEDIAWIKI = "MediaWiki"; 
    public static final String NAME_CONFLUENCE = "Confluence"; 
    public static final String NAME_TWIKI = "TWiki"; 

    private ParseWikiToHTMLUtility() { 
      /* Do not instantiate utility classes */ 
    } 

    public static String parseTextile(String wikiText) { 

      return parseByLanguage(NAME_TEXTILE, wikiText); 
    } 

    public static String parseTracWiki(String wikiText) { 

      return parseByLanguage(NAME_TRACWIKI, wikiText); 
    } 

    public static String parseMediaWiki(String wikiText) { 

      return parseByLanguage(NAME_MEDIAWIKI, wikiText); 
    } 

    public static String parseConfluence(String wikiText) { 

      return parseByLanguage(NAME_CONFLUENCE, wikiText); 
    } 

    public static String parseTWiki(String wikiText) { 

      return parseByLanguage(NAME_TWIKI, wikiText); 
    } 

    public static String parseByLanguage(String name, String wikiText) { 

      return parseByLanguage(ServiceLocator.getInstance().getMarkupLanguage(name), wikiText); 
    } 

    public static String parseByLanguage(MarkupLanguage language, String wikiText) { 

      StringWriter writer = new StringWriter(); 
      HtmlDocumentBuilder builder = new HtmlDocumentBuilder(writer); 
      MarkupParser parser = new MarkupParser(language, builder); 
      parser.parse(wikiText); 
      return writer.toString();     
    } 

    /** 
    * MarkupLanguage API prefers we retrieve the MarkupLanguge by name from 
    * the ServiceLocator; since there are no name constants, we obtain the names 
    * from this method or alternately use the hard-coded names from this utility class, 
    * which were pulled directly from a prior call to this very method. 
    */ 
    public static Set<String> getLanguageNames() { 

      Set<String> languages = new TreeSet<String>(); 
      for (MarkupLanguage s : ServiceLocator.getInstance().getAllMarkupLanguages()) { 
        languages.add(s.getName()); 
      } 

      return languages; 
    }   
} 

從HTML變換,使用HtmlParser.parse()方法。提交你的HTML作爲InputSource並提供DocumentBuilder目標。 DocumentBuilder的實現包括XslfoDocumentBuilder(用於XSL-Fo並最終轉換爲PDF或PostScript),DocBookDocumentBuilder(用於Docbook格式)以及擴展AbstractMarkupDocumentBuilder(幾乎每個標記都有一個:TextileDocumentBuilder,ConfluenceDocumentBuilder等)的類。

其他wiki文字鏈接:

+1

http://www.programcreek.com/java-api-examples/index.php?api=org.eclipse.mylyn .wikitext.core.parser.builder.HtmlDocumentBuilder – cleverpig 2015-01-27 01:08:22

+0

這裏純行家示例(對於降價語言):https://gist.github.com/jmini/58f66c1bd5d0203c5f67 – Jmini 2015-09-25 14:29:58

相關問題