【问题标题】:Are there any Java examples using Mylyn WikiText?有没有使用 Mylyn WikiText 的 Java 示例?
【发布时间】:2013-05-07 17:05:33
【问题描述】:

我想使用 Java 编写从 Mylyn Wiki 支持的格式到 HTML 的转换代码。我没有找到任何有用的在线示例来演示如何使用 Java 为 Mylyn WikiText 编写代码。我只找到了this page on Eclipse,但它使用了 Ant。我请求一些示例代码。

【问题讨论】:

    标签: java html mylyn-wikitext


    【解决方案1】:

    虽然您总是可以code Ant Scripts and launch them from Java,但下面是我刚刚编写的一个完整的实用程序类,它可以让您通过注册到 WikiText 独立部署的各种核心语言来转换 wiki 文本。

    注意,最简单的做法是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 的类(几乎每个标记都有一个:TextileDocumentBuilderConfluenceDocumentBuilder等)。

    其他 WikiText 链接:

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-07-07
    • 2010-10-03
    • 2022-11-09
    • 1970-01-01
    • 1970-01-01
    • 2011-06-26
    • 2010-12-05
    • 2013-08-22
    相关资源
    最近更新 更多