2010-08-16 4 views
0

나는 아파치 tika [AM NEW TIKA]를 사용하여 gz 파일에서 xml (sitemap) 데이터를 추출해야하는 프로젝트를 진행 중이다. fie 이름은 sitemap01.xml.gz와 비슷합니다. 일반 텍스트 파일이나 HTML에서 데이터를 추출 할 수는 있지만 gz에서 XML을 추출하고 XML에서 메타 및 데이터를 추출하는 방법을 모르겠습니다 ... 검색했습니다. 지난 이틀 동안 Google.gzip 파일의 xml 데이터를 Apache tika를 사용하여 추출 하시겠습니까?

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


} 

답변

1

당신이 당신의 ParseContext에 재귀 파서를 설정하는 것입니다 놓친 것은입니다 .... 일부 샘플 또는 기사에 나를 인도 해주십시오. 당신은 아마 같은 원하는 다음 ParseContext에 파서을 설정하여

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

을, 당신은 어떻게 당신이 할 수있는가 (예 : Gzip으로 내부의 XML로) 문서를 포함 발견하면

다음
0

이라고 전화 티카에게 귀하의 경우 아파치 티카의 XML 파서를 사용하십시오 :

//detecting the file type 
    BodyContentHandler handler = new BodyContentHandler(-1); 
    Metadata metadata = new Metadata(); 
    File inFile = new File("sitemap.xml.gz"); 
    System.out.println(inFile.isFile()); 
    FileInputStream inputstream = new FileInputStream(inFile); 
    ParseContext pcontext = new ParseContext(); 

    //Xml parser 
    XMLParser xmlparser = new XMLParser(); 
    xmlparser.parse(inputstream, handler, metadata, pcontext); 
    System.out.println(pcontext.toString()); 

    System.out.println("Contents of the document:" + handler.toString());//this one contains all contents from xml files and tags are also removed 
    System.out.println("Metadata of the document:"); 
    String[] metadataNames = metadata.names(); 

    for(String name : metadataNames) { 
    System.out.println(name + ": " + metadata.get(name)); 
관련 문제