我试图从Office文档中获取元数据值,并将其显示为键值对是:
内容类型:application / zip
我无法在这一个问题上讲述这个问题。为什么它只显示内容类型? 我感兴趣的是像标题这样的键。
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import org.apache.tika.exception.TikaException;
import org.apache.tika.metadata.Metadata;
import org.apache.tika.parser.AutoDetectParser;
import org.apache.tika.sax.BodyContentHandler;
import org.xml.sax.SAXException;
public class App
{
private static final String PATH = "C:/docs/myDocument.docx";
public static void main( String[] args ) throws IOException, SAXException, TikaException
{
Metadata metadata = new Metadata();
AutoDetectParser parser = new AutoDetectParser();
InputStream fileStream = new FileInputStream(PATH);
BodyContentHandler handler = new BodyContentHandler();
parser.parse(fileStream, handler, metadata);
String[] metadataNames = metadata.names();
for (String key : metadataNames) {
String value = metadata.get(key);
System.out.println(key + ": " + value);
}
}
}
答案 0 :(得分:0)
对答案进行评论 - 您似乎缺少一些关键的Apache Tika罐子或其依赖品。
如果您正在使用Maven,那么您的pom应该(截至2015年1月)应该具有以下内容:
<properties>
<tika.version>1.7</tika.version>
</properties>
<dependencies>
<dependency>
<groupId>org.apache.tika</groupId>
<artifactId>tika-core</artifactId>
<version>${tika.version}</version>
</dependency>
<dependency>
<groupId>org.apache.tika</groupId>
<artifactId>tika-parsers</artifactId>
<version>${tika.version}</version>
</dependency>
</dependencies>
tika-core
工件为您提供运行Tika所需的一切,并开发自己的解析器,但不提供任何解析器。它是tika-parsers
工件(+依赖项!),它提供了所有内置的Tika解析器,您需要处理文件,这些解析器是您的