📄 xmlparser.java
字号:
/*
* $Header: /sfroot/cvs/esimple/src/core/org/apache/struts/tiles/xmlDefinition/XmlParser.java,v 1.1.1.1 2004/09/08 06:38:40 lava Exp $
* $Revision: 1.1.1.1 $
* $Date: 2004/09/08 06:38:40 $
*
* ====================================================================
*
* The Apache Software License, Version 1.1
*
* Copyright (c) 1999-2002 The Apache Software Foundation. All rights
* reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* 3. The end-user documentation included with the redistribution, if
* any, must include the following acknowlegement:
* "This product includes software developed by the
* Apache Software Foundation (http://www.apache.org/)."
* Alternately, this acknowlegement may appear in the software itself,
* if and wherever such third-party acknowlegements normally appear.
*
* 4. The names "The Jakarta Project", "Struts", and "Apache Software
* Foundation" must not be used to endorse or promote products derived
* from this software without prior written permission. For written
* permission, please contact apache@apache.org.
*
* 5. Products derived from this software may not be called "Apache"
* nor may "Apache" appear in their names without prior written
* permission of the Apache Group.
*
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
* ====================================================================
*
* This software consists of voluntary contributions made by many
* individuals on behalf of the Apache Software Foundation. For more
* information on the Apache Software Foundation, please see
* <http://www.apache.org/>.
*
*/
package org.apache.struts.tiles.xmlDefinition;
import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import org.apache.commons.digester.Digester;
import org.xml.sax.SAXException;
/**
* Parse an XML definitions file.
*/
public class XmlParser
{
/** Associated digester. */
protected Digester digester;
/**
* Should we use a validating XML parser to read the configuration file.
* Default is <code>false</code>.
*/
protected boolean validating = false;
/**
* The set of public identifiers, and corresponding resource names for
* the versions of the configuration file DTDs we know about. There
* <strong>MUST</strong> be an even number of Strings in this list!
*/
protected String registrations[] = {
// pre 1.1
"-//Apache Software Foundation//DTD Tiles Configuration//EN",
"/org/apache/struts/resources/tiles-config_1_1.dtd",
"-//Apache Software Foundation//DTD Components Configuration//EN",
"/org/apache/struts/resources/tiles-config.dtd",
// version 1.1
"-//Apache Software Foundation//DTD Tiles Configuration 1.1//EN",
"/org/apache/struts/resources/tiles-config_1_1.dtd",
};
/**
* Constructor.
* Creates a digester parser and initializes syntax rules.
*/
public XmlParser()
{
digester = new Digester();
digester.setValidating(validating);
digester.setNamespaceAware(true);
digester.setUseContextClassLoader(true);
// Register our local copy of the DTDs that we can find
for (int i = 0; i < registrations.length; i += 2) {
URL url = this.getClass().getResource(registrations[i+1]);
if (url != null)
{
digester.register(registrations[i], url.toString());
}
}
// Init syntax rules
initDigester( digester );
}
/**
* Set digester validating flag.
*/
public void setValidating( boolean validating )
{
digester.setValidating( validating);
}
/**
* Set digester detail level.
* @deprecated Use the commons-logging to set digester debug level.
*/
public void setDetailLevel( int detailLevel )
{
}
/**
* Init digester for components syntax.
* This is an old set of rules, left for backward compatibility.
* @param digester Digester instance to use.
*/
private void initDigesterForComponentsDefinitionsSyntax( Digester digester )
{
// Common constants
String PACKAGE_NAME = "org.apache.struts.tiles.xmlDefinition";
String DEFINITION_TAG = "component-definitions/definition";
String definitionHandlerClass = PACKAGE_NAME + ".XmlDefinition";
String PUT_TAG = DEFINITION_TAG + "/put";
String putAttributeHandlerClass = PACKAGE_NAME + ".XmlAttribute";
String LIST_TAG = DEFINITION_TAG + "/putList";
String listHandlerClass = PACKAGE_NAME + ".XmlListAttribute";
String ADD_LIST_ELE_TAG = LIST_TAG + "/add";
// syntax rules
digester.addObjectCreate( DEFINITION_TAG, definitionHandlerClass );
digester.addSetProperties( DEFINITION_TAG);
digester.addSetNext( DEFINITION_TAG, "putDefinition", definitionHandlerClass);
// put / putAttribute rules
digester.addObjectCreate( PUT_TAG, putAttributeHandlerClass);
digester.addSetNext( PUT_TAG, "addAttribute", putAttributeHandlerClass);
digester.addSetProperties( PUT_TAG);
digester.addCallMethod( PUT_TAG, "setBody", 0);
// list rules
digester.addObjectCreate( LIST_TAG, listHandlerClass);
digester.addSetProperties( LIST_TAG);
digester.addSetNext( LIST_TAG, "addAttribute", putAttributeHandlerClass);
// list elements rules
// We use Attribute class to avoid rewriting a new class.
// Name part can't be used in listElement attribute.
digester.addObjectCreate( ADD_LIST_ELE_TAG, putAttributeHandlerClass);
digester.addSetNext( ADD_LIST_ELE_TAG, "add", putAttributeHandlerClass);
digester.addSetProperties( ADD_LIST_ELE_TAG);
digester.addCallMethod( ADD_LIST_ELE_TAG, "setBody", 0);
}
/**
* Init digester for Tiles syntax.
* Same as components, but with first element = tiles-definitions
* @param digester Digester instance to use.
*/
private void initDigesterForTilesDefinitionsSyntax( Digester digester )
{
// Common constants
String PACKAGE_NAME = "org.apache.struts.tiles.xmlDefinition";
String DEFINITION_TAG = "tiles-definitions/definition";
String definitionHandlerClass = PACKAGE_NAME + ".XmlDefinition";
String PUT_TAG = DEFINITION_TAG + "/put";
String putAttributeHandlerClass = PACKAGE_NAME + ".XmlAttribute";
//String LIST_TAG = DEFINITION_TAG + "/putList";
// List tag value
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -