package com.thaiopensource.xml.sax; import org.xml.sax.SAXException; import org.xml.sax.XMLReader; import org.xml.sax.SAXNotRecognizedException; import org.xml.sax.SAXNotSupportedException; import org.xml.sax.helpers.XMLReaderFactory; import com.thaiopensource.xml.sax.XMLReaderCreator; /** * An <code>XMLReaderCreator</code> that creates <code>XMLReader</code>s using the SAX2 <code>XMLReaderFactory</code>. * An instance of this class is safe for concurrent access by multiple threads. * * @see org.xml.sax.helpers.XMLReaderFactory * @author <a href="mailto:jjc@jclark.com">James Clark</a> */ public class Sax2XMLReaderCreator implements XMLReaderCreator { private final String className; /** * Constructs a <code>Sax2XMLReaderCreator</code> that uses system defaults to construct <code>XMLReader</code>s. */ public Sax2XMLReaderCreator() { this.className = null; } /** * Constructs a <code>Sax2XMLReaderCreator</code> that constructs <code>XMLReader</code>s with the specified * class name. * * @param className the fully-qualified name of the class implementing <code>XMLReader</code>; * if <code>null</code> equivalent to the no-argument constructor * */ public Sax2XMLReaderCreator(String className) { this.className = className; } public XMLReader createXMLReader() throws SAXException { XMLReader xr; if (className == null) xr = XMLReaderFactory.createXMLReader(); else xr = XMLReaderFactory.createXMLReader(className); xr.setFeature("http://xml.org/sax/features/namespaces", true); xr.setFeature("http://xml.org/sax/features/namespace-prefixes", false); try { xr.setFeature("http://xml.org/sax/features/validation", false); } catch (SAXNotRecognizedException e) { } catch (SAXNotSupportedException e) { } return xr; } }