2014-01-16 73 views
2

我試圖從各種文檔中提取所有文本。 而我正在使用Apache Tika 1.4。使用apach tika解析器從XML文件中提取xml標記中的文本

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文件 - 我只能提取標籤之間的文本,而不是註釋,標籤。

是否可以使用我目前的方法從文本文件中提取所有內容?

回答

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