2010-08-10 1 views
0

xml 파일을받는 서블릿을 작성하고 다른 클래스에 전달한 다음 일부 주석이있는 HTML 파일을 클라이언트에 제공합니다.서블릿 : ServletInputStream을 FileInputStream으로 변환

input = request.getInputStream();

을하지만,이 입력은 ServletInputStream의과 (코멘트에 대한) 다른 클래스가 FileInputStream에 필요하다 : 내가 좋아하는 뭔가를 입력-XML을 얻고있다. 내가 (다른 클래스로)의 XMLEventReader ServletInputStream의를 제공하는 경우

, 내가 구문 분석 오류 얻을 :

ParseError at [row,col]:[1,1] 
Message: Content is not allowed in prolog. 

을 그리고 난이 때문에 대신 FileInputStream에의 ServletInputStream의의라고 생각합니다.

인사말 나는 누군가가 나는 그것이 후자의 문제는 그것이 ServletInputStream 인에 의한 것 같지는 생각 나 :

답변

0

ServletInputStream에서 데이터를 읽고 FileOutputStream으로 덤프해야합니다. 이 방법을 사용하면 전송되는 데이터를 볼 수 있으며 필요로하는 클래스로 FileInputStream을 사용하여 데이터를 개별적으로 테스트 할 수 있습니다. 내 생각에 이전 포스터가 제안한 것처럼 데이터가 잘못된 형식 일 가능성이 높으므로 같은 일이 일어날 것입니다.

+0

input = FileInputStream ("local path of the xml file")과 같이 "comment-class"를 시작하면 모든 것이 작동하지만이 클래스에 서블릿 (servletinputstream)을 통해 동일한 xml을 주면 구문 분석 오류. 그래서 XML 파일이 정확해야합니다. 아마도 두 번째 노드에서 구문 분석 오류가 발생하는 데 도움이됩니다. 첫 번째''분명히 작동합니다. – Graslandpinguin

+0

아마도 응답의 http 헤더를 고려하지 않았습니다. – aepurniet

3

을 도울 수 있기를 바랍니다. 파서는 데이터 소스를 신경 쓰지 않아야합니다.

입력 스트림의 데이터가 올바르지 않을 가능성이 높습니다. 현재 FileInputStream을 필요로

귀하의 클래스는 가능한 모든에 ... 그렇지 않으면 당신은 분명 좋지 않은 첫번째 실제 파일에 데이터를 작성해야하는 경우 InputStream와 함께 작동하도록 리팩토링해야한다.

+0

좋아

인사, 난 "의 InputStream"하지만 같은 문제 에 입력을 변경 그것은 원래 사이의 작은 차이가 있으면 내가 찾아 볼 수있는 문자열로 ServletInputStream의 변환 가능성이있다 XML 파일? – Graslandpinguin

+0

'InputStreamReader'를 사용하십시오. 문자 인코딩을 고려해야합니다. 더 나아가 [Java IO 튜토리얼] (http://java.sun.com/docs/books/tutorial/essential/io/)을 통해 스스로를 얻는 것이 가장 좋은 시점이라고 생각합니다. 그것은 당신이 알아야 할 필수 사항을 설명합니다. – BalusC

+0

@CaptnLenz : 데이터를 디스크에 쓰고 그곳을 살펴 보시기 바랍니다. 'FileOutputStream'을 열어, 입력 스트림으로부터 한 번에 블록을 읽어 내, 출력 스트림에 기입합니다. 그런 다음 파일을 볼 수 있습니다. –

0

좋아, 이제 조금 더 똑똑해. :) 문제는 : ServletInputStream에서 처음과 끝 부분에 한 줄에 일부 헤더 정보 (content-type 등)가 있음을 나타냅니다. 이 정보를 자르는 스마트 솔루션이 있습니까?

+1

새 질문은 새로운 질문이 아니라 새로운 ** 대답 **으로 이동해야합니다. 이것은 포럼이 아닙니다. 이 "대답"을 삭제해야합니다. 그렇지 않으면 삭제 될 수 있습니다. 귀하의 초기 질문에 이미 답변되었습니다. 왼쪽의 체크 표시를 클릭하여 문제 해결에 실제로 도움이되는 * 실제 * 답을 표시하는 것을 잊지 마십시오. http://stackoverflow.com/faq를 참조하십시오. – BalusC