저는 Java에서 Xerces2를 사용하고 있으며 XMLGrammarCachingConfiguration을 가지고 있습니다. parseGrammar를 호출하여 XML 스키마 (xsd)를 문법 풀로 구문 분석합니다. xsd 파일을 잘 파싱하지만 모든 오류와 경고를 stderr에보고합니다 (콘솔에서 캡처되므로 Eclipse를 사용하고 있습니다). 나는 xsd를 변경하여 치명적인 오류가 발생하고 예상대로 응용 프로그램에서 catch 할 수있는 XNIException을 던졌습니다.XMLGrammarCachingConfiguration.parseGrammar()를 호출 할 때 stderr 출력을 캡처하는 방법은 무엇입니까?
XMLGrammarCachingConfiguration.setErrorHandler() 메서드를 사용하고 자체 PrintWriter로 구성하는 DefaultErrorHandler를 전달하려고했습니다. 또한 XMLErrorHandler 인터페이스를 구현하는 자체 오류 처리기를 전달하려고 시도했습니다. 여전히 콘솔에 나타나고, 내 PrintWriter가 사용하고있는 파일에는 나타나지 않습니다.
이렇게 간단해야합니다. 누군가 내가 뭘 잘못하고 있다고 말할 수 있습니까?
- 편집 : 사용자 지정 XMLEntityResolver를 사용하고 있으며 캡처하려는 오류 메시지가 내 확인자가 엔터티를 확인할 수 없어서 resolveEntity()에서 null을 반환한다고 추가해야합니다.) 메쏘드는 기본 엔티티 리졸버 (entity resolver)가 그것을 해결하려고 시도하고 있음을 의미합니다. 즉, 에러 메시지는 기본 엔티티 리졸버 (default entity resolver)로부터 온다.