2011-10-07 14 views
18

Kötü dizeleri bilinçli olarak Java DOM XML ayrıştırıcısına geçiren bazı birim sınamaları yazıyorum.XML ayrıştırma hatalarının System.err (stderr) dosyasına yazılması nasıl önlenir?

E.g.

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); 

Bu

doğru (benim birim test beklediği budur) bir SAXParseException atıyor. Ama aynı zamanda bir Java konsolunda System.err (stderr) bir mesaj yazıyor: stderr yazma DEĞİL XML ayrıştırıcı yapılandırmak için herhangi bir yolu

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

var mı?

Java 1.6SE kullanıyorum.

+0

paketin kaydedicileri yapılandırmak deneyin? Ama neden önemlidir - bunlar birim testlerdir. –

cevap

24

yükleyin kendi ErrorHandler:

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; 
    } 
});