2012-10-07 3 views
0

zip 파일 내에 저장된 XML 파일을 읽으려고합니다. 나는 이것을하는 방법을 이해하는 문제점의 톤을 가지고있다. 내가 할 수있는 최선의 방법은 입력 스트림이 작동하는 것입니다. 그러나 그것을 읽는 방법을 이해할 수는 없습니다! 올바른 파일이라는 것을 알고 있습니다. 데이터를 XML 파서에 전달하고 싶지 않습니다. 그러나 실제로 입력 스트림이 무엇인지, 또는 올바르게 조작하는 방법을 이해하지 못합니다. 이전에 버퍼와 함께 사용하고 버퍼로 읽는 것을 보았습니다.이 질문에 대한 나의 질문은 충분히 큰 파일 인 경우 버퍼의 크기를 적절하게 선택하는 방법입니다.Java에서 Zip 파일 내의 XML을 읽는 방법

도움이 될 것입니다. 감사합니다.

ZipFile zf; 
    try { 
     zf = new ZipFile(directory); 
     CharBuffer charBuffer = CharBuffer.allocate(BUFFER_SIZE); 
     for (Enumeration<? extends ZipEntry> e = zf.entries(); 
      e.hasMoreElements();) { 
     ZipEntry ze = e.nextElement(); 
     String name = ze.getName(); 
     if (name.endsWith(".xml")) { 
      InputStream in = zf.getInputStream(ze); 
      // read from 'in 
     } 
     } 
    } catch (IOException e1) { 
     System.out.println("Sorry we couldn't find the file"); 
     e1.printStackTrace(); 
    } 

답변

1

당신은 같은 의미, 참조 스트림 API와 JAXP

, SAX와

XMLStreamReader reader=XMLInputFactory.newFactory().createXMLStreamReader(in); 
while(reader.hasNext()) 
{ 
    System.out.println(reader.next()); 
    System.out.println(reader.getLocalName()); 
} 

을 이것?

DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory.newInstance(); 
DocumentBuilder docBuilder = docBuilderFactory.newDocumentBuilder(); 
Document document = docBuilder.parse(in); 

또는 InputStream을 사용하지 않는 특정 XML 구문 분석기가 이미 있다는 것을 의미합니까?

+0

Document는 어떤 라이브러리입니까? 나는 그것에 문제가있다. – jQwierdy

+0

'org.w3c.dom.Document'라고 생각합니다. – user1406062

0

간단한 Google 검색은 XML 구문 분석과 관련된 코드 작업을 설명하는 수많은 기사로 연결될 수 있습니다. 왜 그때 검색하지? 그 중

하나 : http://www.java-samples.com/showtutorial.php?tutorialid=152

당신은 당신이 그와 통해있어 언급했기 때문에 파일을 압축 해제 할 수 있지만,이 옵션을 찾고 있다면 나는 내 대답을 편집 할 수 있습니다 방법을 포함하고 있지 않다

.

해피 자바 코딩. :)

+0

XML 구문 분석은 쉬운 부분입니다. XML로 변환 할 수있는 inputStream을 얻으려면 어떻게해야합니까? 말 그대로 입력 스트림에서만 무엇을 해야할지 모르겠다. – jQwierdy

+1

먼저 입력 스트림에 대해 알아야합니다. 형식은 inputStream입니까? 그런 다음 형식에 대해 연구하고 어떤 비트가 무엇을 의미하는지, 그리고 기본 데이터 파싱이 해당 특정 유형의 데이터 스트림에 대해 접근하는지 확인하십시오. @jQwierdy –

1

당신은 SAX 또는 StAX 읽기/스트림 구문 분석하는 데 사용할 수 있습니다 -

SAXParserFactory.newInstance().newSAXParser().parse(in, new YourHandler()); 
관련 문제