HTML到MD java解析异常

HTML到MD java解析异常,java,xslt,Java,Xslt,我正在尝试用java创建一个从html到md的简单java转换器,找到了答案,但是它似乎已经过时,不再工作,下面是堆栈跟踪的bc,2018年有没有机会用任何基于jvm的语言将html转换为md 这两个文件(html、xsl)都正确地格式化为UTF-8,并且不包含任何花哨的字符 org.xml.sax.SAXParseException; lineNumber: 1; columnNumber: 1; Content is not allowed in prolog. 这是我正在调整的代码 pu

我正在尝试用java创建一个从html到md的简单java转换器,找到了答案,但是它似乎已经过时,不再工作,下面是堆栈跟踪的bc,2018年有没有机会用任何基于jvm的语言将html转换为md

这两个文件(html、xsl)都正确地格式化为UTF-8,并且不包含任何花哨的字符

org.xml.sax.SAXParseException; lineNumber: 1; columnNumber: 1; Content is not allowed in prolog.
这是我正在调整的代码

public static void main(String[] args) throws TransformerException {
    final String md = convert(htmlLocation);
}

public static String convert(final String htmlLocation) throws TransformerException {

    if (html == null) {
        return "";
    }

    final File xslFile = new File(xslLocation);
    final Source htmlSource = new StreamSource(new StringReader(htmlLocation));
    final Source xslSource = new StreamSource(xslFile);

    final TransformerFactory transformerFactory = TransformerFactory.newInstance();
    final Transformer transformer = transformerFactory.newTransformer(xslSource);

    final StringWriter result = new StringWriter();
    transformer.transform(htmlSource, new StreamResult(result));

    return result.toString();
}
html的内容


同侧阴唇
同侧阴唇
同侧阴唇


这可能是由于文件开头的隐藏字符造成的。可能,您试图转换的文件中保存着数据(字节顺序标记)。您可以轻松地将此类文件内容转换为UTF-8,然后运行程序。对于Mac,您可以使用命令删除BOM。

也没有多大帮助,同样如此issue@UladzislauKuzmin您是否已将文件转换为UTF-8?如果是,怎么做?您需要修复正在解析的文件的编码。当然,我已经通过sublime更改了编码,我是mac用户,它说文件的格式是UTF-8,如果我在终端中运行
文件标记。xsl
它会给我以下结果
标记。xsl:exported SGML document text,ASCII text,对于非常长的行
,这基本上就是您尝试删除BOM的示例吗?同样,您能否尝试运行代码示例,我将在几分钟后更新问题,您已经显示了您尝试提供给XSLT样式表的HTML文档的完整内容的代码片段?因为XSLT在默认情况下处理格式良好的XML文档,而HTML片段肯定不是格式良好的XML文档。即使您将这些行包装在HTML文件中,并且您的变量名为htmlLocation,但您的代码在htmlLocation变量上使用StringReader,这也不会改变我遇到的问题仅当变量包含HTML内容而不是文件时才有效。所以不清楚你到底在做什么。如果您有一个XHTML文件,那么请使用
htmlSource=newstreamSource(“foo.XHTML”)
。此外,该样式表需要真正的XHTML,元素位于XHTML命名空间中(
http://www.w3.org/1999/xhtml
),而不是没有命名空间的元素。@MartinHonnen这两种方式都不起作用,通过将内容放在正文中,尝试使用有效的xhtml
org.xml.sax.SAXParseException; 
lineNumber: 1; columnNumber: 1; Content is not allowed in prolog.