我使用的Xerces2 Java和有XMLGrammarCachingConfiguration。我正在使用它通過調用parseGrammar來將XML模式(xsd)解析到語法池中。它很好地解析了xsd文件,但是它向stderr報告了所有錯誤和警告(我正在使用Eclipse,因此它在控制檯中被捕獲)。我設法改變我的xsd,以便它會有一個致命錯誤,並且如預期的那樣拋出了我的應用程序可能捕獲的XNIException。當我調用XMLGrammarCachingConfiguration.parseGrammar()時,如何捕獲stderr輸出?
我一直在使用該方法XMLGrammarCachingConfiguration.setErrorHandler(),並通過它,我用我自己的PrintWriter構造DefaultErrorHandler嘗試。我也嘗試傳遞自己的實現XMLErrorHandler接口的自定義錯誤處理程序。它仍然出現在控制檯中,而不是在我的PrintWriter正在使用的文件中。
這似乎應該是這麼簡單。有人能告訴我我做錯了什麼嗎?
- 編輯: 我應該補充一點,我使用自定義的XMLEntityResolver,並且我想捕獲的錯誤消息是當我的解析器無法解析實體,並且從其resolveEntity返回null( )方法,這意味着默認實體解析器正在嘗試解析它。即錯誤消息來自底層默認實體解析器。