OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.

 


Help: OASIS Mailing Lists Help | MarkMail Help

 


 

   Re: [xml-dev] SAX/Java Proposed Changes

[ Lists Home | Date Index | Thread Index ]

Elliotte Rusty Harold wrote:

> Then your code will break when used with some of today's parsers which 
> do call endDocument() after a fatal error.. :-(

See the example program below, which demonstrates my statement with
Crimson, Xerces, ...


> It's a question of where you have that information. It's often 
> convenient to know the document has ended inside the ContentHandler. Not 
> that you can't have the method that calls parse() then call 
> endDocument() inside the ContentHandler, but it's ugly, hard to explain, 
> and error prone.

I'd support your opinion 100% if it wouldn't break existing
applications.


Jochen


import java.io.StringReader;

import javax.xml.parsers.SAXParserFactory;

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

public class Main {
     public static void main(String[] args) throws Exception {
         String doc = "<foo/>";
         XMLReader xr = 
SAXParserFactory.newInstance().newSAXParser().getXMLReader();
         xr.setContentHandler(new DefaultHandler(){
             public void startDocument() throws SAXException {
                 System.out.println("startDocument");
                 throw new SAXException("startDocument fails");
             }
             public void endDocument() throws SAXException {
                 System.out.println("endDocument");
             }
         });
         xr.parse(new InputSource(new StringReader(doc)));
     }
}




 

News | XML in Industry | Calendar | XML Registry
Marketplace | Resources | MyXML.org | Sponsors | Privacy Statement

Copyright 2001 XML.org. This site is hosted by OASIS