001 package com.thaiopensource.xml.sax; 002 003 import org.xml.sax.SAXException; 004 import org.xml.sax.XMLReader; 005 import org.xml.sax.SAXNotRecognizedException; 006 import org.xml.sax.SAXNotSupportedException; 007 import org.xml.sax.helpers.XMLReaderFactory; 008 009 import com.thaiopensource.xml.sax.XMLReaderCreator; 010 011 /** 012 * An <code>XMLReaderCreator</code> that creates <code>XMLReader</code>s using the SAX2 <code>XMLReaderFactory</code>. 013 * An instance of this class is safe for concurrent access by multiple threads. 014 * 015 * @see org.xml.sax.helpers.XMLReaderFactory 016 * @author <a href="mailto:jjc@jclark.com">James Clark</a> 017 */ 018 public class Sax2XMLReaderCreator implements XMLReaderCreator { 019 private final String className; 020 021 /** 022 * Constructs a <code>Sax2XMLReaderCreator</code> that uses system defaults to construct <code>XMLReader</code>s. 023 */ 024 public Sax2XMLReaderCreator() { 025 this.className = null; 026 } 027 028 /** 029 * Constructs a <code>Sax2XMLReaderCreator</code> that constructs <code>XMLReader</code>s with the specified 030 * class name. 031 * 032 * @param className the fully-qualified name of the class implementing <code>XMLReader</code>; 033 * if <code>null</code> equivalent to the no-argument constructor 034 * 035 */ 036 public Sax2XMLReaderCreator(String className) { 037 this.className = className; 038 } 039 040 public XMLReader createXMLReader() throws SAXException { 041 XMLReader xr; 042 if (className == null) 043 xr = XMLReaderFactory.createXMLReader(); 044 else 045 xr = XMLReaderFactory.createXMLReader(className); 046 xr.setFeature("http://xml.org/sax/features/namespaces", true); 047 xr.setFeature("http://xml.org/sax/features/namespace-prefixes", false); 048 try { 049 xr.setFeature("http://xml.org/sax/features/validation", false); 050 } 051 catch (SAXNotRecognizedException e) { 052 } 053 catch (SAXNotSupportedException e) { 054 } 055 return xr; 056 } 057 }