无法正确 Key-Value 与 Tika 配对

Can't get correct Key-Value Pairs with Tika

我正在尝试从 Office 文档中获取元数据值,它显示为 key-value 对的全部是这个:

Content-Type: application/zip

我只是不能说出这个问题。为什么它只显示 Content-Type? 我感兴趣的是像标题这样的键。

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);
        }
    }
}

提升对答案的评论 - 您似乎缺少一些关键的 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 解析器,您需要用它来处理您的文件