1

Jsoup (バージョン: 1.7.3) を使用して MHT ドキュメントを解析しようとしています。目標は、2 つのファイルを開き、それらをマージ (頭と体を結合) して 1 つの完全なファイルを取得することです。しかし、最初に、mht ファイルの解析で問題が発生しました。これは、解析結果に情報の大幅な遅れがあり、解析後に開くことができないためです。私がしたことは次のとおりです。

  • Word を使用して mht ファイルを作成する (1 つの画像といくつかのテキストを含む)
  • 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();
    }
}

ご協力いただきありがとうございます。

4

1 に答える 1

3

Jsoup のバグではありません。問題は、MHT ファイルが MIME マルチパート ファイルであり、html とその他のリソースが 1 つのファイルにまとめられていることです。MHT ファイルをテキスト エディタ (メモ帳など) で開くと、純粋な HTML ファイルではなく、MIME でエンコードされたファイルであることがわかります。

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

特定のセクション内には、html、css、画像などのさまざまなアセットがあります。そのため、Jsoup を問題に適用する前に、まず MIME マルチパート ファイルを解析して個々のパーツを取得する必要があります。

その問題に対処する方法についての参考資料には、次のものがあります。

于 2014-08-13T14:37:10.953 に答える