Although I'm aware the behavior while using this feature is undetermined I report such bugs because of others which may are interested in improving the reliability while using the feature.

I'm attaching a sample code and input data which cause the parser (Xerces-J 2.9.1) to hang.

--
Stanimir
//package ;

import javax.xml.parsers.SAXParserFactory;

import org.xml.sax.InputSource;
import org.xml.sax.SAXParseException;
import org.xml.sax.XMLReader;
import org.xml.sax.helpers.DefaultHandler;

public class ParseTest {

    public static void main(String[] args) throws Exception {
        SAXParserFactory spf = SAXParserFactory.newInstance();
        spf.setValidating(false);
        spf.setNamespaceAware(false);
        spf.setFeature("http://apache.org/xml/features/";
                       + "continue-after-fatal-error", true);
        
        XMLReader xmlReader = spf.newSAXParser()
                              .getXMLReader();
        
        DefaultHandler handler = new DefaultHandler() {
            
            public void warning(SAXParseException ex) {
                printMessage(ex, "warning");
            }
            
            public void error(SAXParseException ex) {
                printMessage(ex, "error");
            }
            
            public void fatalError(SAXParseException ex) {
                printMessage(ex, "fatalError");   // and continue
            }
            
            private void printMessage(SAXParseException ex, String type) {
                StringBuffer msg = new StringBuffer()
                        .append('[').append(type).append(']').append(' ');
                String id = ex.getSystemId();
                if (id != null) {
                    msg.append(id).append(':');
                }
                msg.append(ex.getLineNumber()).append(':')
                        .append(ex.getColumnNumber()).append(':')
                        .append(' ').append(ex.getMessage());
                System.err.println(msg);
            }
            
        };
        xmlReader.setContentHandler(handler);
        xmlReader.setErrorHandler(handler);
        
        InputSource source = new InputSource(ParseTest.class
                .getResource("foo.xml").toExternalForm());
        
        Thread.currentThread().setPriority(Thread.MIN_PRIORITY);
        xmlReader.parse(source);
        
        System.out.println("Done.");
    }

}
<?xml version="1.0" encoding="US-ASCII" ?>
<!DOCTYPE foo SYSTEM "foo.dtd">
<foo bar="    
	cen&#09;ter    
	"
  />

Attachment: foo.dtd
Description: application/xml-dtd

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to