⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 parseradapter.java

📁 gcc的组建
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
	    String value = qAtts.getValue(i);	    if (!nsSupport.declarePrefix(prefix, value)) {		reportError("Illegal Namespace prefix: " + prefix);		continue;	    }	    if (contentHandler != null)		contentHandler.startPrefixMapping(prefix, value);	}					// Second pass: copy all relevant				// attributes into the SAX2 AttributeList				// using updated prefix bindings	atts.clear();	for (int i = 0; i < length; i++) {	    String attQName = qAtts.getName(i);	    String type = qAtts.getType(i);	    String value = qAtts.getValue(i);				// Declaration?	    if (attQName.startsWith("xmlns")) {		String prefix;		int n = attQName.indexOf(':');		if (n == -1 && attQName.length () == 5) {		    prefix = "";		} else if (n != 5) {		    // XML namespaces spec doesn't discuss "xmlnsf:oo"		    // (and similarly named) attributes ... ignore		    prefix = null;		} else {		    prefix = attQName.substring(6);		}				// Yes, decl:  report or prune		if (prefix != null) {		    if (prefixes) {			if (uris)			    // note funky case:  localname can be null			    // when declaring the default prefix, and			    // yet the uri isn't null.			    atts.addAttribute (nsSupport.XMLNS, prefix,				    attQName.intern(), type, value);			else			    atts.addAttribute ("", "",				    attQName.intern(), type, value);		    }		    continue;		}	    } 				// Not a declaration -- report	    try {		String attName[] = processName(attQName, true, true);		atts.addAttribute(attName[0], attName[1], attName[2],				  type, value);	    } catch (SAXException e) {		if (exceptions == null)		    exceptions = new Vector();		exceptions.addElement(e);		atts.addAttribute("", attQName, attQName, type, value);	    }	}		// now handle the deferred exception reports	if (exceptions != null && errorHandler != null) {	    for (int i = 0; i < exceptions.size(); i++)		errorHandler.error((SAXParseException)				(exceptions.elementAt(i)));	}				// OK, finally report the event.	if (contentHandler != null) {	    String name[] = processName(qName, false, false);	    contentHandler.startElement(name[0], name[1], name[2], atts);	}    }    /**     * Adapter implementation method; do not call.     * Adapt a SAX1 end element event.     *     * @param qName The qualified (prefixed) name.     * @exception SAXException The client may raise a     *            processing exception.     * @see org.xml.sax.DocumentHandler#endElement     */    public void endElement (String qName)	throws SAXException    {				// If we're not doing Namespace				// processing, dispatch this quickly.	if (!namespaces) {	    if (contentHandler != null) {		contentHandler.endElement("", "", qName.intern());	    }	    return;	}				// Split the name.	String names[] = processName(qName, false, false);	if (contentHandler != null) {	    contentHandler.endElement(names[0], names[1], names[2]);	    Enumeration prefixes = nsSupport.getDeclaredPrefixes();	    while (prefixes.hasMoreElements()) {		String prefix = (String)prefixes.nextElement();		contentHandler.endPrefixMapping(prefix);	    }	}	nsSupport.popContext();    }    /**     * Adapter implementation method; do not call.     * Adapt a SAX1 characters event.     *     * @param ch An array of characters.     * @param start The starting position in the array.     * @param length The number of characters to use.     * @exception SAXException The client may raise a     *            processing exception.     * @see org.xml.sax.DocumentHandler#characters     */    public void characters (char ch[], int start, int length)	throws SAXException    {	if (contentHandler != null) {	    contentHandler.characters(ch, start, length);	}    }    /**     * Adapter implementation method; do not call.     * Adapt a SAX1 ignorable whitespace event.     *     * @param ch An array of characters.     * @param start The starting position in the array.     * @param length The number of characters to use.     * @exception SAXException The client may raise a     *            processing exception.     * @see org.xml.sax.DocumentHandler#ignorableWhitespace     */    public void ignorableWhitespace (char ch[], int start, int length)	throws SAXException    {	if (contentHandler != null) {	    contentHandler.ignorableWhitespace(ch, start, length);	}    }    /**     * Adapter implementation method; do not call.     * Adapt a SAX1 processing instruction event.     *     * @param target The processing instruction target.     * @param data The remainder of the processing instruction     * @exception SAXException The client may raise a     *            processing exception.     * @see org.xml.sax.DocumentHandler#processingInstruction     */    public void processingInstruction (String target, String data)	throws SAXException    {	if (contentHandler != null) {	    contentHandler.processingInstruction(target, data);	}    }    ////////////////////////////////////////////////////////////////////    // Internal utility methods.    ////////////////////////////////////////////////////////////////////    /**     * Initialize the parser before each run.     */    private void setupParser ()    {	// catch an illegal "nonsense" state.	if (!prefixes && !namespaces)	    throw new IllegalStateException ();	nsSupport.reset();	if (uris)	    nsSupport.setNamespaceDeclUris (true);	if (entityResolver != null) {	    parser.setEntityResolver(entityResolver);	}	if (dtdHandler != null) {	    parser.setDTDHandler(dtdHandler);	}	if (errorHandler != null) {	    parser.setErrorHandler(errorHandler);	}	parser.setDocumentHandler(this);	locator = null;    }    /**     * Process a qualified (prefixed) name.     *     * <p>If the name has an undeclared prefix, use only the qname     * and make an ErrorHandler.error callback in case the app is     * interested.</p>     *     * @param qName The qualified (prefixed) name.     * @param isAttribute true if this is an attribute name.     * @return The name split into three parts.     * @exception SAXException The client may throw     *            an exception if there is an error callback.     */    private String [] processName (String qName, boolean isAttribute,				   boolean useException)	throws SAXException    {	String parts[] = nsSupport.processName(qName, nameParts,					       isAttribute);	if (parts == null) {	    if (useException)		throw makeException("Undeclared prefix: " + qName);	    reportError("Undeclared prefix: " + qName);	    parts = new String[3];	    parts[0] = parts[1] = "";	    parts[2] = qName.intern();	}	return parts;    }    /**     * Report a non-fatal error.     *     * @param message The error message.     * @exception SAXException The client may throw     *            an exception.     */    void reportError (String message)	throws SAXException    {	if (errorHandler != null)	    errorHandler.error(makeException(message));    }        /**     * Construct an exception for the current context.     *     * @param message The error message.     */    private SAXParseException makeException (String message)    {	if (locator != null) {	    return new SAXParseException(message, locator);	} else {	    return new SAXParseException(message, null, null, -1, -1);	}    }    /**     * Throw an exception if we are parsing.     *     * <p>Use this method to detect illegal feature or     * property changes.</p>     *     * @param type The type of thing (feature or property).     * @param name The feature or property name.     * @exception SAXNotSupportedException If a     *            document is currently being parsed.     */    private void checkNotParsing (String type, String name)	throws SAXNotSupportedException    {	if (parsing) {	    throw new SAXNotSupportedException("Cannot change " +					       type + ' ' +					       name + " while parsing");					       	}    }    ////////////////////////////////////////////////////////////////////    // Internal state.    ////////////////////////////////////////////////////////////////////    private NamespaceSupport nsSupport;    private AttributeListAdapter attAdapter;    private boolean parsing = false;    private String nameParts[] = new String[3];    private Parser parser = null;    private AttributesImpl atts = null;				// Features    private boolean namespaces = true;    private boolean prefixes = false;    private boolean uris = false;				// Properties				// Handlers    Locator locator;    EntityResolver entityResolver = null;    DTDHandler dtdHandler = null;    ContentHandler contentHandler = null;    ErrorHandler errorHandler = null;    ////////////////////////////////////////////////////////////////////    // Inner class to wrap an AttributeList when not doing NS proc.    ////////////////////////////////////////////////////////////////////    /**     * Adapt a SAX1 AttributeList as a SAX2 Attributes object.     *     * <p>This class is in the Public Domain, and comes with NO     * WARRANTY of any kind.</p>     *     * <p>This wrapper class is used only when Namespace support     * is disabled -- it provides pretty much a direct mapping     * from SAX1 to SAX2, except that names and types are      * interned whenever requested.</p>     */    final class AttributeListAdapter implements Attributes    {	/**	 * Construct a new adapter.	 */	AttributeListAdapter ()	{	}	/**	 * Set the embedded AttributeList.	 *	 * <p>This method must be invoked before any of the others	 * can be used.</p>	 *	 * @param The SAX1 attribute list (with qnames).	 */	void setAttributeList (AttributeList qAtts)	{	    this.qAtts = qAtts;	}	/**	 * Return the length of the attribute list.	 *	 * @return The number of attributes in the list.	 * @see org.xml.sax.Attributes#getLength	 */	public int getLength ()	{	    return qAtts.getLength();	}	/**	 * Return the Namespace URI of the specified attribute.	 *	 * @param The attribute's index.	 * @return Always the empty string.	 * @see org.xml.sax.Attributes#getURI	 */	public String getURI (int i)	{	    return "";	}	/**	 * Return the local name of the specified attribute.	 *	 * @param The attribute's index.	 * @return Always the empty string.	 * @see org.xml.sax.Attributes#getLocalName	 */	public String getLocalName (int i)	{	    return "";	}	/**	 * Return the qualified (prefixed) name of the specified attribute.	 *	 * @param The attribute's index.	 * @return The attribute's qualified name, internalized.	 */	public String getQName (int i)	{	    return qAtts.getName(i).intern();	}	/**	 * Return the type of the specified attribute.	 *	 * @param The attribute's index.	 * @return The attribute's type as an internalized string.	 */	public String getType (int i)	{	    return qAtts.getType(i).intern();	}	/**	 * Return the value of the specified attribute.	 *	 * @param The attribute's index.	 * @return The attribute's value.	 */	public String getValue (int i)	{	    return qAtts.getValue(i);	}	/**	 * Look up an attribute index by Namespace name.	 *	 * @param uri The Namespace URI or the empty string.	 * @param localName The local name.	 * @return The attributes index, or -1 if none was found.	 * @see org.xml.sax.Attributes#getIndex(java.lang.String,java.lang.String)	 */	public int getIndex (String uri, String localName)	{	    return -1;	}	/**	 * Look up an attribute index by qualified (prefixed) name.	 *	 * @param qName The qualified name.	 * @return The attributes index, or -1 if none was found.	 * @see org.xml.sax.Attributes#getIndex(java.lang.String)	 */	public int getIndex (String qName)	{	    int max = atts.getLength();	    for (int i = 0; i < max; i++) {		if (qAtts.getName(i).equals(qName)) {		    return i;		}	    }	    return -1;	}	/**	 * Look up the type of an attribute by Namespace name.	 *	 * @param uri The Namespace URI	 * @param localName The local name.	 * @return The attribute's type as an internalized string.	 */	public String getType (String uri, String localName)	{	    return null;	}	/**	 * Look up the type of an attribute by qualified (prefixed) name.	 *	 * @param qName The qualified name.	 * @return The attribute's type as an internalized string.	 */	public String getType (String qName)	{	    return qAtts.getType(qName).intern();	}	/**	 * Look up the value of an attribute by Namespace name.	 *	 * @param uri The Namespace URI	 * @param localName The local name.	 * @return The attribute's value.	 */	public String getValue (String uri, String localName)	{	    return null;	}	/**	 * Look up the value of an attribute by qualified (prefixed) name.	 *	 * @param qName The qualified name.	 * @return The attribute's value.	 */	public String getValue (String qName)	{	    return qAtts.getValue(qName);	}	private AttributeList qAtts;    }}// end of ParserAdapter.java

⌨️ 快捷键说明

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