basicparserconfiguration.java

来自「JAVA 所有包」· Java 代码 · 共 587 行 · 第 1/2 页

JAVA
587
字号
/* * Copyright 2001-2004 The Apache Software Foundation. *  * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at *  *      http://www.apache.org/licenses/LICENSE-2.0 *  * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */package com.sun.org.apache.xerces.internal.parsers;import java.io.IOException;import java.util.ArrayList;import java.util.HashMap;import java.util.Locale;import com.sun.org.apache.xerces.internal.impl.Constants;import com.sun.org.apache.xerces.internal.util.ParserConfigurationSettings;import com.sun.org.apache.xerces.internal.util.SymbolTable;import com.sun.org.apache.xerces.internal.xni.XMLDTDContentModelHandler;import com.sun.org.apache.xerces.internal.xni.XMLDTDHandler;import com.sun.org.apache.xerces.internal.xni.XMLDocumentHandler;import com.sun.org.apache.xerces.internal.xni.XNIException;import com.sun.org.apache.xerces.internal.xni.parser.XMLComponent;import com.sun.org.apache.xerces.internal.xni.parser.XMLComponentManager;import com.sun.org.apache.xerces.internal.xni.parser.XMLConfigurationException;import com.sun.org.apache.xerces.internal.xni.parser.XMLDocumentSource;import com.sun.org.apache.xerces.internal.xni.parser.XMLEntityResolver;import com.sun.org.apache.xerces.internal.xni.parser.XMLErrorHandler;import com.sun.org.apache.xerces.internal.xni.parser.XMLInputSource;import com.sun.org.apache.xerces.internal.xni.parser.XMLParserConfiguration;/** * A very basic parser configuration. This configuration class can * be used as a base class for custom parser configurations. The * basic parser configuration creates the symbol table (if not * specified at construction time) and manages all of the recognized * features and properties. * <p> * The basic parser configuration does <strong>not</strong> mandate * any particular pipeline configuration or the use of specific  * components except for the symbol table. If even this is too much * for a basic parser configuration, the programmer can create a new * configuration class that implements the  * <code>XMLParserConfiguration</code> interface. * <p> * Subclasses of the basic parser configuration can add their own * recognized features and properties by calling the * <code>addRecognizedFeature</code> and  * <code>addRecognizedProperty</code> methods, respectively. * <p> * The basic parser configuration assumes that the configuration * will be made up of various parser components that implement the * <code>XMLComponent</code> interface. If subclasses of this * configuration create their own components for use in the  * parser configuration, then each component should be added to * the list of components by calling the <code>addComponent</code> * method. The basic parser configuration will make sure to call * the <code>reset</code> method of each registered component * before parsing an instance document. * <p> * This class recognizes the following features and properties: * <ul> * <li>Features *  <ul> *   <li>http://xml.org/sax/features/validation</li> *   <li>http://xml.org/sax/features/namespaces</li> *   <li>http://xml.org/sax/features/external-general-entities</li> *   <li>http://xml.org/sax/features/external-parameter-entities</li> *  </ul> * <li>Properties *  <ul> *   <li>http://xml.org/sax/properties/xml-string</li> *   <li>http://apache.org/xml/properties/internal/symbol-table</li> *   <li>http://apache.org/xml/properties/internal/error-handler</li> *   <li>http://apache.org/xml/properties/internal/entity-resolver</li> *  </ul> * </ul> * * @author Arnaud  Le Hors, IBM * @author Andy Clark, IBM * * @version $Id: BasicParserConfiguration.java,v 1.2.6.1 2005/09/06 12:53:19 sunithareddy Exp $ */public abstract class BasicParserConfiguration    extends ParserConfigurationSettings    implements XMLParserConfiguration {    //    // Constants    //    // feature identifiers    /** Feature identifier: validation. */    protected static final String VALIDATION =        Constants.SAX_FEATURE_PREFIX + Constants.VALIDATION_FEATURE;        /** Feature identifier: namespaces. */    protected static final String NAMESPACES =        Constants.SAX_FEATURE_PREFIX + Constants.NAMESPACES_FEATURE;        /** Feature identifier: external general entities. */    protected static final String EXTERNAL_GENERAL_ENTITIES =        Constants.SAX_FEATURE_PREFIX + Constants.EXTERNAL_GENERAL_ENTITIES_FEATURE;        /** Feature identifier: external parameter entities. */    protected static final String EXTERNAL_PARAMETER_ENTITIES =        Constants.SAX_FEATURE_PREFIX + Constants.EXTERNAL_PARAMETER_ENTITIES_FEATURE;        // property identifiers    /** Property identifier: xml string. */    protected static final String XML_STRING =         Constants.SAX_PROPERTY_PREFIX + Constants.XML_STRING_PROPERTY;    /** Property identifier: symbol table. */    protected static final String SYMBOL_TABLE =         Constants.XERCES_PROPERTY_PREFIX + Constants.SYMBOL_TABLE_PROPERTY;    /** Property identifier: error handler. */    protected static final String ERROR_HANDLER =         Constants.XERCES_PROPERTY_PREFIX + Constants.ERROR_HANDLER_PROPERTY;    /** Property identifier: entity resolver. */    protected static final String ENTITY_RESOLVER =         Constants.XERCES_PROPERTY_PREFIX + Constants.ENTITY_RESOLVER_PROPERTY;    //    // Data    //    // components (non-configurable)    /** Symbol table. */    protected SymbolTable fSymbolTable;    // data    /** Locale. */    protected Locale fLocale;    /** Components. */    protected ArrayList fComponents;    // handlers    /** The document handler. */    protected XMLDocumentHandler fDocumentHandler;    /** The DTD handler. */    protected XMLDTDHandler fDTDHandler;    /** The DTD content model handler. */    protected XMLDTDContentModelHandler fDTDContentModelHandler;    /** Last component in the document pipeline */         protected XMLDocumentSource fLastComponent;    //    // Constructors    //    /** Default Constructor. */    protected BasicParserConfiguration() {        this(null, null);    } // <init>()    /**      * Constructs a parser configuration using the specified symbol table.      *     * @param symbolTable The symbol table to use.     */    protected BasicParserConfiguration(SymbolTable symbolTable) {        this(symbolTable, null);    } // <init>(SymbolTable)    /**      * Constructs a parser configuration using the specified symbol table     * and parent settings.     *     * @param symbolTable    The symbol table to use.     * @param parentSettings The parent settings.     */    protected BasicParserConfiguration(SymbolTable symbolTable,                                       XMLComponentManager parentSettings) {        super(parentSettings);        // create a vector to hold all the components in use        fComponents = new ArrayList();        // create storage for recognized features and properties        fRecognizedFeatures = new ArrayList();        fRecognizedProperties = new ArrayList();        // create table for features and properties        fFeatures = new HashMap();        fProperties = new HashMap();        // add default recognized features        final String[] recognizedFeatures = {        	PARSER_SETTINGS,            VALIDATION,                             NAMESPACES,             EXTERNAL_GENERAL_ENTITIES,              EXTERNAL_PARAMETER_ENTITIES,        };        addRecognizedFeatures(recognizedFeatures);        fFeatures.put(PARSER_SETTINGS, Boolean.TRUE);        // set state for default features		fFeatures.put(VALIDATION, Boolean.FALSE);		fFeatures.put(NAMESPACES, Boolean.TRUE);		fFeatures.put(EXTERNAL_GENERAL_ENTITIES, Boolean.TRUE);		fFeatures.put(EXTERNAL_PARAMETER_ENTITIES, Boolean.TRUE);        // add default recognized properties        final String[] recognizedProperties = {            XML_STRING,                 SYMBOL_TABLE,            ERROR_HANDLER,              ENTITY_RESOLVER,        };        addRecognizedProperties(recognizedProperties);        if (symbolTable == null) {            symbolTable = new SymbolTable();        }        fSymbolTable = symbolTable;        fProperties.put(SYMBOL_TABLE, fSymbolTable);    } // <init>(SymbolTable)    /**      * Adds a component to the parser configuration. This method will     * also add all of the component's recognized features and properties     * to the list of default recognized features and properties.     *     * @param component The component to add.     */    protected void addComponent(XMLComponent component) {        // don't add a component more than once        if (fComponents.contains(component)) {            return;        }        fComponents.add(component);        // register component's recognized features        String[] recognizedFeatures = component.getRecognizedFeatures();        addRecognizedFeatures(recognizedFeatures);                // register component's recognized properties        String[] recognizedProperties = component.getRecognizedProperties();        addRecognizedProperties(recognizedProperties);        // set default values        if (recognizedFeatures != null) {            for (int i = 0; i < recognizedFeatures.length; i++) {                String featureId = recognizedFeatures[i];                Boolean state = component.getFeatureDefault(featureId);                if (state != null) {                    super.setFeature(featureId, state.booleanValue());                }            }        }        if (recognizedProperties != null) {            for (int i = 0; i < recognizedProperties.length; i++) {                String propertyId = recognizedProperties[i];                Object value = component.getPropertyDefault(propertyId);                if (value != null) {                    super.setProperty(propertyId, value);                }            }        }    } // addComponent(XMLComponent)    //    // XMLParserConfiguration methods    //    /**     * Parse an XML document.     * <p>     * The parser can use this method to instruct this configuration     * to begin parsing an XML document from any valid input source

⌨️ 快捷键说明

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