Mylyn Wikitext的API文档具有将Wiki Markup转换为HTML的功能,但我找不到将HTML代码转换/解析为Wiki Markup的功能。类MarkupParser
有方法parseToHTML
,但在哪里可以找到相反的方法?
答案 0 :(得分:10)
尝试Wikifier。
它并不能完全符合您的要求,但您可能会发现它足够,或者是一个有用的起点。
Wikifier将Confluence 4 XML存储格式的片段(即Confluence Source Editor插件所示,没有单个文档根元素)转换为Confluence 3 wiki标记。
为什么这与你的问题有关? Confluence 4 XML存储格式包含一些与XHTML元素和属性具有相同名称的元素和属性。
有关详细信息,请单击Wikifier网页上的“帮助”链接。
注意:Wikifier网页使用的XSLT样式表比与相关模式包捆绑在一起的XSLT样式表略微更新。
后来添加:Wikifier RT更接近你想要的。
答案 1 :(得分:4)
以下是使用WikiText Standalone在Mylyn中执行此操作的方法。用适当的DocumentBuilder
替换所需的Wiki标记(您必须检查API以查看可用的内容; TextileDocumentBuilder
也存在)。
文件 ConvertToConfluence.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));
}
}
文件 filename.html :
<HTML>
<BODY>
<p>This is <b>bold text</b> and some <i>italic text</i>.<br/><br/>TEST!</p>
</BODY>
</HTML>
生成Confluence输出:
This is *bold text* and some _italic text_.
\\TEST!
答案 2 :(得分:3)
可能是这个链接可以提供帮助:
答案 3 :(得分:2)
我能够使用Atlassian自己的Java库中的<activity
android:name="com.example.Activities.A"
android:launchMode="singleTask"
android:clearTaskOnLaunch="false"
android:finishOnTaskLaunch="false"
android:label="@string/app_name"
>
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
<activity
android:name="com.example.Activities.B"
android:launchMode="singleTask"
android:clearTaskOnLaunch="false"
android:finishOnTaskLaunch="false"
android:label="@string/app_name"
>
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
来实现HTML到Confluence风格的WikiMarkup。这是一个简化的单元测试:
DefaultWysiwygConverter
POM必须包含正确的存储库和依赖项
import com.atlassian.renderer.wysiwyg.converter.DefaultWysiwygConverter;
String htmlString = "This is <em>emphasized</em> and <b>bold</b>";
DefaultWysiwygConverter converter = new DefaultWysiwygConverter();
String wikiMarkupString = converter.convertXHtmlToWikiMarkup(htmlString);
Assert.assertEquals("This is _emphasized_ and *bold*", wikiMarkupString);
答案 4 :(得分:-1)
据我所知,无法将HTML转换为Confluence维基标记。由于Atlassian在Confluence 4.x中停止使用纺织品作为维基标记,因此无需进行转换。页面格式是XHTML。