我的应用程序预计它有时会尝试解析无效的XML文档。我目前收到“SAXParseException:内容不允许在序言中。”例外,这工作正常。然而,Xerces仍然觉得需要将它自己的消息打印到控制台:禁用Java Xerces中的日志记录(“[致命错误]:1:1:内容不被允许在序言中。”)
[Fatal Error] :1:1: Content is not allowed in prolog.
有什么办法可以禁用它吗?
我的应用程序预计它有时会尝试解析无效的XML文档。我目前收到“SAXParseException:内容不允许在序言中。”例外,这工作正常。然而,Xerces仍然觉得需要将它自己的消息打印到控制台:禁用Java Xerces中的日志记录(“[致命错误]:1:1:内容不被允许在序言中。”)
[Fatal Error] :1:1: Content is not allowed in prolog.
有什么办法可以禁用它吗?
我相信它默认打印到System.out或System.err。如果您直接与Xerces类交互,则可以在Parser上设置一个ErrorHandler接口。
否则,你可以尝试设置在SAXParser的财产org.apache.xerces.impl.Constants.ERROR_REPORTER_PROPERTY与XMLErrorReporter
的实例,我刚刚在同样的需要来。将ErrorHandler设置为null将禁止致命错误打印行。
parser.setErrorHandler(null);
等效采用org.w3c.dom.ls.LSParser时是
parser.getDomConfig().setParameter("error-handler", null);
我今天有这个问题,它原来是一个standard configuration parameter,我在这里读你的答案之后才发现。谢谢。