xmlreaderfactory.java

来自「java jdk 1.4的源码」· Java 代码 · 共 140 行

JAVA
140
字号
// XMLReaderFactory.java - factory for creating a new reader.// Written by David Megginson, sax@megginson.com// NO WARRANTY!  This class is in the Public Domain.// $Id: XMLReaderFactory.java,v 1.2 2001/04/05 00:52:32 edwingo Exp $package org.xml.sax.helpers;import org.xml.sax.Parser;import org.xml.sax.XMLReader;import org.xml.sax.SAXException;/** * Factory for creating an XML reader. * * <blockquote> * <em>This module, both source code and documentation, is in the * Public Domain, and comes with <strong>NO WARRANTY</strong>.</em> * </blockquote> * * <p>This class contains static methods for creating an XML reader * from an explicit class name, or for creating an XML reader based * on the value of the <code>org.xml.sax.driver</code> system  * property:</p> * * <pre> * try { *   XMLReader myReader = XMLReaderFactory.createXMLReader(); * } catch (SAXException e) { *   System.err.println(e.getMessage()); * } * </pre> * * <p>Note that these methods will not be usable in environments where * system properties are not accessible or where the application or * applet is not permitted to load classes dynamically.</p> * * <p><strong>Note to implementors:</strong> SAX implementations in specialized * environments may replace this class with a different one optimized for the * environment, as long as its method signatures remain the same.</p> * * @since SAX 2.0 * @author David Megginson,  *         <a href="mailto:sax@megginson.com">sax@megginson.com</a> * @version 2.0 * @see org.xml.sax.XMLReader */final public class XMLReaderFactory{    /**     * Private constructor.     *     * <p>This constructor prevents the class from being instantiated.</p>     */    private XMLReaderFactory ()    {    }    /**     * Attempt to create an XML reader from a system property.     *     * <p>This method uses the value of the system property     * "org.xml.sax.driver" as the full name of a Java class     * and tries to instantiate that class as a SAX2      * XMLReader.</p>     *     * <p>Note that many Java interpreters allow system properties     * to be specified on the command line.</p>     *     * @return A new XMLReader.     * @exception org.xml.sax.SAXException If the value of the     *            "org.xml.sax.driver" system property is null,     *            or if the class cannot be loaded and instantiated.     * @see #createXMLReader(java.lang.String)     */    public static XMLReader createXMLReader ()	throws SAXException    {	String className = System.getProperty("org.xml.sax.driver");	if (className == null) {	    Parser parser;	    try {		parser = ParserFactory.makeParser();	    } catch (Exception e) {		parser = null;	    }	    if (parser == null) {		throw new		    SAXException("System property org.xml.sax.driver not specified");	    } else {		return new ParserAdapter(parser);	    }	} else {	    return createXMLReader(className);	}    }    /**     * Attempt to create an XML reader from a class name.     *     * <p>Given a class name, this method attempts to load     * and instantiate the class as an XML reader.</p>     *     * @return A new XML reader.     * @exception org.xml.sax.SAXException If the class cannot be     *            loaded, instantiated, and cast to XMLReader.     * @see #createXMLReader()     */    public static XMLReader createXMLReader (String className)	throws SAXException    {	try {            // Original SAX code	    // return (XMLReader)(Class.forName(className).newInstance());            return (XMLReader) NewInstance.newInstance(className);	} catch (ClassNotFoundException e1) {	    throw new SAXException("SAX2 driver class " + className +				   " not found", e1);	} catch (IllegalAccessException e2) {	    throw new SAXException("SAX2 driver class " + className +				   " found but cannot be loaded", e2);	} catch (InstantiationException e3) {	    throw new SAXException("SAX2 driver class " + className +				   " loaded but cannot be instantiated (no empty public constructor?)",				   e3);	} catch (ClassCastException e4) {	    throw new SAXException("SAX2 driver class " + className +				   " does not implement XMLReader", e4);	}				       }}// end of XMLReaderFactory.java

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?