如何将 HTML 代码转换为 Confluence 样式的 Wiki 标记?

2022-09-04 02:53:05

Mylyn Wikitext的API文档具有将Wiki标记转换为HTML的函数,但我找不到将HTML代码转换/解析为Wiki标记的函数。类有方法,但我在哪里可以找到相反的方法?MarkupParserparseToHTML


答案 1

试试维基过滤器

它不能完全按照你想要的去做,但你可能会发现它做得足够多,或者是一个有用的起点。

Wikifier将Confluence 4 XML存储格式的片段(即Confluence Source Editor插件所示,没有单个文档根元素)转换为Confluence 3 wiki标记。

为什么这与您的问题有关?Confluence 4 XML 存储格式包括一些与 XHTML 元素和属性同名的元素和属性。

有关更多信息,请单击 Wikifier 网页上的“帮助”链接。

注意:Wikifier 网页使用的 XSLT 样式表比与相关架构包捆绑在一起的 XSLT 样式表略新。

这是后来添加的:Wikifier RT更接近你想要的。


答案 2

以下是你如何使用WikiText Standalone在Mylyn中做到这一点。用适当的代码替换您想要的Wiki标记(您必须检查API以查看可用的内容; 也存在)。DocumentBuilderTextileDocumentBuilder

文件转换到汇合.java

package com.stackoverflow.mylyn;

import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.StringWriter;

import org.eclipse.mylyn.internal.wikitext.confluence.core.ConfluenceDocumentBuilder;
import org.eclipse.mylyn.wikitext.core.parser.HtmlParser;
import org.xml.sax.InputSource;

public class ConvertToConfluence {

    public static String convertHTML(File htmlFile) {

        InputStream in = null;

        try {

            in = new FileInputStream(htmlFile);

        } catch (Exception ex) {

            // TODO: handle or re-throw file exception
        }

        InputSource inputSource = new InputSource(new InputStreamReader(in));
        StringWriter writer = new StringWriter();
        ConfluenceDocumentBuilder builder = new ConfluenceDocumentBuilder(writer);
        HtmlParser parser = new HtmlParser();

        try {

            parser.parse(inputSource, builder);

        } catch (Exception ex) {

            // TODO: handle or re-throw parsing exception
        }

        return writer.toString();       
    }   

    public static void main(String args[]) {

        File file = new File("c:\\filename.html");
        System.out.println(convertHTML(file));
    }
}

文件文件名.html

<HTML>
<BODY>
<p>This is <b>bold text</b> and some <i>italic text</i>.<br/><br/>TEST!</p>
</BODY>
</HTML>

产生汇合输出:

This is *bold text* and some _italic text_.
\\TEST!