有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何防止将XML解析错误写入系统。错误(标准)?

我正在编写一些单元测试,它们故意将坏字符串传递给Java DOM XML解析器

例如

DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();

String message_xml = ""; // Empty string, not valid XML!!!
ByteArrayInputStream input = new ByteArrayInputStream(message_xml.getBytes());
Document doc = db.parse(input);

这是正确的抛出SAXParseException(这是我的单元测试所期望的)。但它也在向系统发送信息。Java控制台中的err(stderr):

[Fatal Error] :1:1: Premature end of file.

有没有办法将XML解析器配置为不写入stderr

我使用的是Java1.6SE


共 (1) 个答案

  1. # 1 楼答案

    安装自己的^{}

    db.setErrorHandler(new ErrorHandler() {
        @Override
        public void warning(SAXParseException e) throws SAXException {
            ;
        }
    
        @Override
        public void fatalError(SAXParseException e) throws SAXException {
            throw e;
        }
    
        @Override
        public void error(SAXParseException e) throws SAXException {
            throw e;
        }
    });