使用apach tika解析器从XML文件中的xml标记中提取文本

时间:2014-01-16 23:38:02

标签: xml apache-tika

我正在尝试从各种文档中提取所有文本。 为此,我使用的是Apache Tika 1.4。

RecursiveTikaParser parser = new RecursiveTikaParser(new AutoDetectParser());
ParseContext parseContext = new ParseContext();
parseContext.set(Parser.class, parser);

这里的RecursiveTikaParser只是AutoDetectParser的包装器。

解析方法就是这样 -

ContentHandler content = new BodyContentHandler(-1);
Metadata metadata = new Metadata();
super.parse(stream, content, metadata, context);
System.out.println("Parsed text is " + content.toString());

现在,此代码必须能够处理多个文件,这就是我使用AutoDetectParser()的原因

我在测试中发现,给定一个xml文件 - 我只能提取标签之间的文本而不是注释,标签。

是否可以使用我当前的方法从文本文件中提取所有内容?

1 个答案:

答案 0 :(得分:0)

试试这个

    Metadata metadata = new Metadata();
    stream = TikaInputStream.get(stream, null);
    String mimtType = DETECTOR.detect(stream, metadata).toString();
    Parser parser;
    if (mimtType.equalsIgnoreCase("application/xml")) {
        parser = new TXTParser();
    } else {
        parser = new AutoDetectParser();
    }

    ContentHandler content = new BodyContentHandler();
    parser.parse(stream, content, metadata, new ParseContext());
    System.out.println(content.toString());