JavaJSoup错误?解析一个。mht文件
我正在尝试使用Jsoup(版本:1.7.3)解析MHT文档。目标是打开两个文件并将它们合并在一起(连接头部和身体),以获得一个完整的文件。 但首先,我在解析mht文件时遇到了问题,因为解析后的结果有很大的信息滞后,在解析后无法打开。我所做的是:
- 使用Word创建mht文件(包含一个图像和一些文本)
- 使用Jsoup将其解析为字符串
- 将字符串写入文件
- 打开文件,文件就坏了
我使用了以下代码:
private static final String USED_CHARSET = "windows-1252";
private static final String PATH = "C:\\Test\\";
private static final Charset CHARSET = Charset.forName(USED_CHARSET);
@Test
public void test() throws IOException {
Document doc = Jsoup.parse(new File(PATH, "sourceMht.mht"),
USED_CHARSET);
writeDoc(new File(PATH, "parsedMht.mht"), doc.html());
}
private void writeDoc(File file, String html) throws IOException {
Writer out = new BufferedWriter(new OutputStreamWriter(
new FileOutputStream(file), CHARSET));
try {
out.write(html);
} finally {
out.flush();
out.close();
}
}
谢谢你的帮助
# 1 楼答案
这不是一个Jsoup错误。问题是MHT文件是MIME多部分文件,将html和其他资源捆绑到一个文件中。如果在文本编辑器(例如记事本)中打开MHT文件,您将看到它不是纯HTML文件,而是MIME编码的文件:
在某些部分中有各种资源,如html、css、图像等。因此,在将Jsoup应用于问题之前,首先需要解析MIME多部分文件,以获取各个部分
有关如何解决该问题的一些有用参考资料包括: