我的应用程序期望它有时会尝试解析无效的 XML 文档。我目前捕捉到“SAXParseException:prolog 中不允许内容”。异常,效果很好。然而,Xerces 仍然觉得有必要将它自己的消息打印到控制台:
[Fatal Error] :1:1: Content is not allowed in prolog.
有什么办法可以禁用它吗?
我最近遇到了同样的需求。将 ErrorHandler 设置为 null 会抑制致命错误打印行。
parser.setErrorHandler(null);
我相信它默认打印到 System.out 或 System.err。如果您直接与 Xerces 类交互,则可以在 Parser 上设置一个 ErrorHandler 接口。
否则,您可以尝试使用 XMLErrorReporter 实例在 SAXParser 上设置属性 org.apache.xerces.impl.Constants.ERROR_REPORTER_PROPERTY
使用org.w3c.dom.ls.LSParser时的等价物是
parser.getDomConfig().setParameter("error-handler", null);
我今天遇到了这个问题,结果证明这是一个标准配置参数,我是在阅读了您的答案后才发现的。谢谢。