001 package com.thaiopensource.xml.sax;
002
003 import javax.xml.parsers.SAXParserFactory;
004 import javax.xml.parsers.ParserConfigurationException;
005 import org.xml.sax.XMLReader;
006 import org.xml.sax.SAXException;
007
008 import com.thaiopensource.xml.sax.XMLReaderCreator;
009
010 /**
011 * An <code>XMLReaderCreator</code> that uses JAXP 1.1 to create <code>XMLReader</code>s.
012 * An instance of this class is <em>not</em> safe for concurrent access by multiple threads.
013 *
014 * @see javax.xml.parsers.SAXParserFactory
015 * @author <a href="mailto:jjc@jclark.com">James Clark</a>
016 */
017 public class Jaxp11XMLReaderCreator implements XMLReaderCreator {
018
019 private final SAXParserFactory factory;
020
021 /**
022 * Default constructor.
023 */
024 public Jaxp11XMLReaderCreator() {
025 factory = SAXParserFactory.newInstance();
026 factory.setNamespaceAware(true);
027 factory.setValidating(false);
028 }
029
030 public XMLReader createXMLReader() throws SAXException {
031 try {
032 return factory.newSAXParser().getXMLReader();
033 }
034 catch (ParserConfigurationException e) {
035 throw new SAXException(e);
036 }
037 }
038 }