使用Tika无法获得正确的Key-Value Pairs

时间:2015-01-27 12:58:16

标签: java apache metadata key-value apache-tika

我试图从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);
        }
    }
}

1 个答案:

答案 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解析器,您需要处理文件,这些解析器是您的