tohtmlsaxhandler.java

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

JAVA
744
字号
    /**     * Does nothing.     * @see org.xml.sax.ext.LexicalHandler#endCDATA()     */    public void endCDATA() throws SAXException    {        return;    }    /**     * Does nothing.     * @see org.xml.sax.ext.LexicalHandler#endDTD()     */    public void endDTD() throws SAXException    {    }    /**     * Does nothing.     * @see org.xml.sax.ext.LexicalHandler#startCDATA()     */    public void startCDATA() throws SAXException    {    }    /**     * Does nothing.     * @see org.xml.sax.ext.LexicalHandler#startEntity(String)     */    public void startEntity(String arg0) throws SAXException    {    }    /**     * Receive notification of the end of a document.     *     * <p>The SAX parser will invoke this method only once, and it will     * be the last method invoked during the parse.  The parser shall     * not invoke this method until it has either abandoned parsing     * (because of an unrecoverable error) or reached the end of     * input.</p>     *     * @throws org.xml.sax.SAXException Any SAX exception, possibly     *            wrapping another exception.     *     * @throws org.xml.sax.SAXException     *     *     */    public void endDocument() throws SAXException    {        flushPending();        // Close output document        m_saxHandler.endDocument();        if (m_tracer != null)            super.fireEndDoc();            }    /**     * This method is called when all the data needed for a call to the     * SAX handler's startElement() method has been gathered.     */    protected void closeStartTag() throws SAXException    {        m_elemContext.m_startTagOpen = false;        // Now is time to send the startElement event        m_saxHandler.startElement(            EMPTYSTRING,            m_elemContext.m_elementName,            m_elemContext.m_elementName,            m_attributes);        m_attributes.clear();           }    /**     * Do nothing.     * @see SerializationHandler#close()     */    public void close()    {        return;    }    /**     * Receive notification of character data.     *     * @param chars The string of characters to process.     *     * @throws org.xml.sax.SAXException     *     * @see ExtendedContentHandler#characters(String)     */    public void characters(final String chars) throws SAXException    {        final int length = chars.length();        if (length > m_charsBuff.length)        {            m_charsBuff = new char[length * 2 + 1];        }        chars.getChars(0, length, m_charsBuff, 0);                this.characters(m_charsBuff, 0, length);    }    /**     * A constructor     * @param handler the wrapped SAX content handler     * @param encoding the encoding of the output HTML document     */    public ToHTMLSAXHandler(ContentHandler handler, String encoding)    {        super(handler,encoding);    }    /**     * A constructor.     * @param handler the wrapped SAX content handler     * @param lex the wrapped lexical handler     * @param encoding the encoding of the output HTML document     */    public ToHTMLSAXHandler(        ContentHandler handler,        LexicalHandler lex,        String encoding)    {        super(handler,lex,encoding);    }    /**     * An element starts, but attributes are not fully known yet.     *     * @param elementNamespaceURI the URI of the namespace of the element     * (optional)     * @param elementLocalName the element name, but without prefix     * (optional)     * @param elementName the element name, with prefix, if any (required)     *     * @see ExtendedContentHandler#startElement(String)     */    public void startElement(        String elementNamespaceURI,        String elementLocalName,        String elementName) throws SAXException    {        super.startElement(elementNamespaceURI, elementLocalName, elementName);        flushPending();        // Handle document type declaration (for first element only)        if (!m_dtdHandled)        {            String doctypeSystem = getDoctypeSystem();            String doctypePublic = getDoctypePublic();            if ((doctypeSystem != null) || (doctypePublic != null)) {                if (m_lexHandler != null)                    m_lexHandler.startDTD(                        elementName,                        doctypePublic,                        doctypeSystem);            }			m_dtdHandled = true;        }        m_elemContext = m_elemContext.push(elementNamespaceURI, elementLocalName, elementName);    }    /**     * An element starts, but attributes are not fully known yet.     *     * @param elementName the element name, with prefix, if any     *     * @see ExtendedContentHandler#startElement(String)     */    public void startElement(String elementName) throws SAXException    {        this.startElement(null,null, elementName);    }        /**     * Receive notification of the end of an element.     * @param elementName The element type name     * @throws org.xml.sax.SAXException Any SAX exception, possibly     *     wrapping another exception.     *     * @see ExtendedContentHandler#endElement(String)     */    public void endElement(String elementName) throws SAXException    {        flushPending();        m_saxHandler.endElement(EMPTYSTRING, elementName, elementName);        // time to fire off endElement event		if (m_tracer != null)            super.fireEndElem(elementName);            }    /**     * Receive notification of character data.     *     * <p>The Parser will call this method to report each chunk of     * character data.  SAX parsers may return all contiguous character     * data in a single chunk, or they may split it into several     * chunks; however, all of the characters in any single event     * must come from the same external entity, so that the Locator     * provides useful information.</p>     *     * <p>The application must not attempt to read from the array     * outside of the specified range.</p>     *     * <p>Note that some parsers will report whitespace using the     * ignorableWhitespace() method rather than this one (validating     * parsers must do so).</p>     *     * @param ch The characters from the XML document.     * @param off The start position in the array.     * @param len The number of characters to read from the array.     * @throws org.xml.sax.SAXException Any SAX exception, possibly     *            wrapping another exception.     * @see #ignorableWhitespace     * @see org.xml.sax.Locator     *     * @throws org.xml.sax.SAXException     *     * @see org.xml.sax.ContentHandler#characters(char[], int, int)     */    public void characters(char[] ch, int off, int len) throws SAXException    {        flushPending();        m_saxHandler.characters(ch, off, len);        // time to fire off characters event		if (m_tracer != null)            super.fireCharEvent(ch, off, len);            }    /**     * This method flushes any pending events, which can be startDocument()     * closing the opening tag of an element, or closing an open CDATA section.     */    public void flushPending() throws SAXException    {		if (m_needToCallStartDocument)		{			startDocumentInternal();			m_needToCallStartDocument = false;		}       	        // Close any open element        if (m_elemContext.m_startTagOpen)        {            closeStartTag();            m_elemContext.m_startTagOpen = false;        }    }    /**     * Handle a prefix/uri mapping, which is associated with a startElement()     * that is soon to follow. Need to close any open start tag to make     * sure than any name space attributes due to this event are associated wih     * the up comming element, not the current one.     * @see ExtendedContentHandler#startPrefixMapping     *     * @param prefix The Namespace prefix being declared.     * @param uri The Namespace URI the prefix is mapped to.     * @param shouldFlush true if any open tags need to be closed first, this     * will impact which element the mapping applies to (open parent, or its up     * comming child)     * @return returns true if the call made a change to the current     * namespace information, false if it did not change anything, e.g. if the     * prefix/namespace mapping was already in scope from before.     *     * @throws org.xml.sax.SAXException The client may throw     *            an exception during processing.     */        public boolean startPrefixMapping(        String prefix,        String uri,        boolean shouldFlush)        throws SAXException    {        // no namespace support for HTML        if (shouldFlush)             flushPending();           m_saxHandler.startPrefixMapping(prefix,uri);        return false;    }    /**     * Begin the scope of a prefix-URI Namespace mapping     * just before another element is about to start.     * This call will close any open tags so that the prefix mapping     * will not apply to the current element, but the up comming child.     *     * @see org.xml.sax.ContentHandler#startPrefixMapping     *     * @param prefix The Namespace prefix being declared.     * @param uri The Namespace URI the prefix is mapped to.     *     * @throws org.xml.sax.SAXException The client may throw     *            an exception during processing.     *     */    public void startPrefixMapping(String prefix, String uri)        throws org.xml.sax.SAXException    {        startPrefixMapping(prefix,uri,true);            }    /**     * This method is used when a prefix/uri namespace mapping     * is indicated after the element was started with a     * startElement() and before and endElement().     * startPrefixMapping(prefix,uri) would be used before the     * startElement() call.     * @param prefix the prefix associated with the given URI.     * @param uri the URI of the namespace     *     * @see ExtendedContentHandler#namespaceAfterStartElement(String, String)     */    public void namespaceAfterStartElement(        final String prefix,        final String uri)        throws SAXException    {        // hack for XSLTC with finding URI for default namespace        if (m_elemContext.m_elementURI == null)        {            String prefix1 = getPrefixPart(m_elemContext.m_elementName);            if (prefix1 == null && EMPTYSTRING.equals(prefix))            {                // the elements URI is not known yet, and it                // doesn't have a prefix, and we are currently                // setting the uri for prefix "", so we have                // the uri for the element... lets remember it                m_elemContext.m_elementURI = uri;            }        }               startPrefixMapping(prefix,uri,false);    }        /**     * Try's to reset the super class and reset this class for      * re-use, so that you don't need to create a new serializer      * (mostly for performance reasons).     *      * @return true if the class was successfuly reset.     * @see Serializer#reset()     */    public boolean reset()    {        boolean wasReset = false;        if (super.reset())        {            resetToHTMLSAXHandler();            wasReset = true;        }        return wasReset;    }        /**     * Reset all of the fields owned by ToHTMLSAXHandler class     *     */    private void resetToHTMLSAXHandler()    {        this.m_escapeSetting = false;    }  }

⌨️ 快捷键说明

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