我使用Apache Tika 1.5来解析zip文件中的内容,
这是我的示例代码
Parser parser = new AutoDetectParser();
ParseContext context = new ParseContext();
context.set(Parser.class, parser);
ContentHandler handler = new DefaultHandler();
Metadata metadata = new Metadata();
InputStream stream = null;
try {
stream = TikaInputStream.get(new File(zipFilePath));
} catch (FileNotFoundException e) {
e.printStackTrace();
}
try {
parser.parse(stream, handler, metadata, context);
logger.info("Content:\t" + handler.toString());
} catch (IOException e) {
e.printStackTrace();
} catch (SAXException e) {
e.printStackTrace();
} catch (TikaException e) {
e.printStackTrace();
} finally {
try {
stream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
我在logger语句中看到是org.xml.sax.helpers.DefaultHandler@5bd8e367
我遗失了一些东西,无法弄明白, 寻求帮助
答案 0 :(得分:2)
首先,您需要确保拥有所有正确的罐子。您可以在类路径中仅使用tika-core
jar调用Apache Tika,但它无法通过解析方式执行此操作。对于解析,您需要tika-core
加tika-parsers
以及所有依赖项。最简单的方法就是使用Maven,它会为你处理它。
否则,您的代码中会出现一个有问题的行:
ContentHandler handler = new DefaultHandler();
如果你想要文件的纯文本,我建议使用:
ContentHandler handler = new BodyContentHandler();
如果你想要XHTML版本,那么你会想要类似的东西:
ContentHandler handler = new ToXMLContentHandler();
最后,如果您想控制如何提取/处理zip文件中的嵌入文档,请查看Tika Wiki for Recursion上的示例