0

Apache tika [AM NEW TO TIKA] を使用して gz ファイルから xml(sitemap)data を抽出する必要があるプロジェクトに取り組んでいます。ファイル名は sitemap01.xml.gz のようなものです 通常のテキストファイルや html からデータを抽出することはできますが、gz から xml を抽出し、xml からメタとデータを抽出する方法がわかりません... 過去に Google で検索しました二日。

xml からデータを抽出するには、tika で delegateParser を使用する必要がありますか? いくつかのサンプルまたは記事に私を案内してください....

これが私の試みです

public void parseXml() throws IOException{
    Metadata metadata = new Metadata();
    ContentHandler handler = new BodyContentHandler();
    Parser parser = new AutoDetectParser();
    ParseContext context = new ParseContext();
     InputStream stream =this.getClass().getResourceAsStream("sitemap.xml.gz");
    try {
        parser.parse(stream,handler,metadata,context);
        for(int i = 0; i <metadata.names().length; i++) {
            String name = metadata.names()[i];
            System.out.println(name + " : " + metadata.get(name));
          }
        System.out.println(handler.toString());

    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (SAXException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (TikaException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }finally{
         if(stream!=null) {
                stream.close();
            }
    }


}
4

2 に答える 2

1

欠けているのは、ParseContext に再帰パーサーを設定することです。おそらく次のようなものが必要です。

Parser parser = new AutoDetectParser();
ParseContext context = new ParseContext();
context.set(Parser.class, parser);
parser.parse(....)

ParseContext にパーサーを設定することで、埋め込みドキュメント (GZip 内の XML など) に遭遇したときにそれを呼び出すように Tika に指示します。

于 2011-03-31T17:25:50.600 に答える