【发布时间】:2010-12-07 06:00:25
【问题描述】:
我的应用程序期望它有时会尝试解析无效的 XML 文档。我目前捕捉到“SAXParseException:prolog 中不允许内容”。异常,它工作正常。但是,Xerces 仍然觉得需要将自己的消息打印到控制台:
[Fatal Error] :1:1: Content is not allowed in prolog.
有什么办法可以禁用它?
【问题讨论】:
我的应用程序期望它有时会尝试解析无效的 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);
我今天遇到了这个问题,结果是standard configuration parameter,我是在阅读您的答案后才发现的。谢谢。
【讨论】: