gpt4 book ai didi

java - Jsoup 错误?解析 .mht 文档

转载 作者:行者123 更新时间:2023-11-29 05:19:39 26 4
gpt4 key购买 nike

我正在尝试使用 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();
}
}

感谢您的帮助。

最佳答案

这不是 Jsoup 错误。问题是 MHT 文件是 MIME Multipart 文件,将 html 和其他资源捆绑到一个文件中。如果您在文本编辑器(例如记事本)中打开 MHT 文件,您会发现它不是纯 HTML 文件,而是 MIME 编码文件:

MIME-Version: 1.0
Content-Type: multipart/related; boundary="----=_NextPart_01CFB635.40B30630"
....

在某些部分中存在各种 Assets ,例如 html、css、图像等。因此,在您可以将 Jsoup 应用于问题之前,您首先需要解析 MIME 多部分文件以获取各个部分。

关于如何解决该问题的一些有用引用资料包括:

关于java - Jsoup 错误?解析 .mht 文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25286691/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com