使用Java将HTML标记为Markdown

Ser*_*Amo 34 java markdown

有没有一种简单的方法可以使用JAVA将HTML转换为markdown?

我目前正在使用Java MarkdownJ库将markdown转换为html.

import com.petebevin.markdown.MarkdownProcessor;
...
public static String getHTML(String markdown) {
    MarkdownProcessor markdown_processor = new MarkdownProcessor();
    return markdown_processor.markdown(markdown);
}

public static String getMarkdown(String html) {
/* TODO Ask stackoverflow */
}
Run Code Online (Sandbox Code Playgroud)

Mar*_*iar 39

使用此XSLT.

如果您需要使用XSLT和Java的帮助,请参阅以下代码片段:

public static void main(String[] args) throws Exception {

        File xsltFile = new File("mardownXSLT.xslt");

        Source xmlSource = new StreamSource(new StringReader(theHTML));
        Source xsltSource = new StreamSource(xsltFile);

        TransformerFactory transFact =
                TransformerFactory.newInstance();
        Transformer trans = transFact.newTransformer(xsltSource);

        StringWriter result = new StringWriter();
        trans.transform(xmlSource, new StreamResult(result));
    }
Run Code Online (Sandbox Code Playgroud)

  • 重要提示:此XSLT是以CC-share相似的许可证分发的,这意味着:"如果您[...]以这项工作为基础,您可以仅根据相同或类似的许可分发此作品" (4认同)
  • @ cx42net - 它并非如此重要)))在许多国家,CC-share-like许可证在所有国家都没有任何合法权力;) (2认同)

小智 10

我找到了将HTML转换为Markdown的Remark,请参阅:http: //remark.overzealous.com/manual/index.html它依赖于JSoup,这是一个用于处理真实HTML的强大Java库.


小智 7

有一个名为Flexmark的 Java 库具有这样的功能。Maven 依赖:

<dependency>
    <groupId>com.vladsch.flexmark</groupId>
    <artifactId>flexmark-html2md-converter</artifactId>
    <version>0.64.0</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)

使用该类,com.vladsch.flexmark.html2md.converter.FlexmarkHtmlConverter您可以在一行中将 HTML 字符串转换为 Markdown 字符串,如下所示:

String md = FlexmarkHtmlConverter.builder().build().convert(html);
Run Code Online (Sandbox Code Playgroud)


Gab*_*eim 5

有一个很棒的 JS 库叫做Turndown,你可以在这里在线试用。它适用于接受的答案出错的 html。

我需要它用于 Java(作为问题),所以我移植了它。Java 库被称为CopyDown,它具有与 Turndown 相同的测试套件,我已经用真实的例子尝试过它,接受的答案是抛出错误。

使用 gradle 安装:

dependencies {
        compile 'io.github.furstenheim:copy_down:1.0'
}
Run Code Online (Sandbox Code Playgroud)

然后使用它:

dependencies {
        compile 'io.github.furstenheim:copy_down:1.0'
}
Run Code Online (Sandbox Code Playgroud)

附注。它有 MIT 许可证


mya*_*abc 3

我正在研究同一问题,并尝试几种不同的技术。

上面的答案可以工作。您可以使用jTidy 库来完成初始清理工作并将 HTML 转换为 XHTML。您可以使用上面链接的XSLT 样式表。

不幸的是,没有一个库具有在 Java 中执行此操作的一站式功能。您可以尝试将 Python 脚本html2text与 Jython 结合使用,但我还没有尝试过!