serializerbase.java

来自「JAVA 所有包」· Java 代码 · 共 1,384 行 · 第 1/3 页

JAVA
1,384
字号
                        addAttributeAlways(                uri,                atts.getLocalName(i),                atts.getQName(i),                atts.getType(i),                atts.getValue(i),                false);        }    }    /**     * Return a {@link ContentHandler} interface into this serializer.     * If the serializer does not support the {@link ContentHandler}     * interface, it should return null.     *     * @return A {@link ContentHandler} interface into this serializer,     *  or null if the serializer is not SAX 2 capable     * @throws IOException An I/O exception occured     */    public ContentHandler asContentHandler() throws IOException    {        return this;    }    /**     * Report the end of an entity.     *     * @param name The name of the entity that is ending.     * @throws org.xml.sax.SAXException The application may raise an exception.     * @see #startEntity     */    public void endEntity(String name) throws org.xml.sax.SAXException    {        if (name.equals("[dtd]"))            m_inExternalDTD = false;        m_inEntityRef = false;        if (m_tracer != null)            this.fireEndEntity(name);            }    /**     * Flush and close the underlying java.io.Writer. This method applies to     * ToStream serializers, not ToSAXHandler serializers.     * @see ToStream     */    public void close()    {        // do nothing (base behavior)    }    /**     * Initialize global variables     */    protected void initCDATA()    {        // CDATA stack        //        _cdataStack = new Stack();        //        _cdataStack.push(new Integer(-1)); // push dummy value    }    /**     * Returns the character encoding to be used in the output document.     * @return the character encoding to be used in the output document.     */    public String getEncoding()    {        return m_encoding;    }   /**     * Sets the character encoding coming from the xsl:output encoding stylesheet attribute.     * @param m_encoding the character encoding     */    public void setEncoding(String m_encoding)    {        this.m_encoding = m_encoding;    }    /**     * Sets the value coming from the xsl:output omit-xml-declaration stylesheet attribute     * @param b true if the XML declaration is to be omitted from the output     * document.     */    public void setOmitXMLDeclaration(boolean b)    {        this.m_shouldNotWriteXMLHeader = b;    }    /**     * @return true if the XML declaration is to be omitted from the output     * document.     */    public boolean getOmitXMLDeclaration()    {        return m_shouldNotWriteXMLHeader;    }    /**     * Returns the previously set value of the value to be used as the public     * identifier in the document type declaration (DTD).     *      *@return the public identifier to be used in the DOCTYPE declaration in the     * output document.     */        public String getDoctypePublic()    {        return m_doctypePublic;    }    /** Set the value coming from the xsl:output doctype-public stylesheet attribute.      * @param doctypePublic the public identifier to be used in the DOCTYPE      * declaration in the output document.      */    public void setDoctypePublic(String doctypePublic)    {        this.m_doctypePublic = doctypePublic;    }    /**     * Returns the previously set value of the value to be used     * as the system identifier in the document type declaration (DTD).	 * @return the system identifier to be used in the DOCTYPE declaration in	 * the output document.     *     */        public String getDoctypeSystem()    {        return m_doctypeSystem;    }    /** Set the value coming from the xsl:output doctype-system stylesheet attribute.      * @param doctypeSystem the system identifier to be used in the DOCTYPE      * declaration in the output document.      */    public void setDoctypeSystem(String doctypeSystem)    {        this.m_doctypeSystem = doctypeSystem;    }    /** Set the value coming from the xsl:output doctype-public and doctype-system stylesheet properties     * @param doctypeSystem the system identifier to be used in the DOCTYPE     * declaration in the output document.     * @param doctypePublic the public identifier to be used in the DOCTYPE     * declaration in the output document.     */    public void setDoctype(String doctypeSystem, String doctypePublic)    {        this.m_doctypeSystem = doctypeSystem;        this.m_doctypePublic = doctypePublic;    }    /**     * Sets the value coming from the xsl:output standalone stylesheet attribute.     * @param standalone a value of "yes" indicates that the     * <code>standalone</code> delaration is to be included in the output     * document. This method remembers if the value was explicitly set using     * this method, verses if the value is the default value.     */    public void setStandalone(String standalone)    {        if (standalone != null)        {            m_standaloneWasSpecified = true;            setStandaloneInternal(standalone);        }    }    /**     * Sets the XSL standalone attribute, but does not remember if this is a     * default or explicite setting.     * @param standalone "yes" | "no"     */        protected void setStandaloneInternal(String standalone)    {        if ("yes".equals(standalone))            m_standalone = "yes";        else            m_standalone = "no";            }    /**     * Gets the XSL standalone attribute     * @return a value of "yes" if the <code>standalone</code> delaration is to     * be included in the output document.     *  @see XSLOutputAttributes#getStandalone()     */    public String getStandalone()    {        return m_standalone;    }    /**     * @return true if the output document should be indented to visually     * indicate its structure.     */    public boolean getIndent()    {        return m_doIndent;    }    /**     * Gets the mediatype the media-type or MIME type associated with the output     * document.     * @return the mediatype the media-type or MIME type associated with the     * output document.     */    public String getMediaType()    {        return m_mediatype;    }    /**     * Gets the version of the output format.     * @return the version of the output format.     */    public String getVersion()    {        return m_version;    }    /**     * Sets the value coming from the xsl:output version attribute.     * @param version the version of the output format.     * @see SerializationHandler#setVersion(String)     */    public void setVersion(String version)    {        m_version = version;    }    /**     * Sets the value coming from the xsl:output media-type stylesheet attribute.     * @param mediaType the non-null media-type or MIME type associated with the     * output document.     * @see javax.xml.transform.OutputKeys#MEDIA_TYPE     * @see SerializationHandler#setMediaType(String)     */    public void setMediaType(String mediaType)    {        m_mediatype = mediaType;    }    /**     * @return the number of spaces to indent for each indentation level.     */    public int getIndentAmount()    {        return m_indentAmount;    }    /**     * Sets the indentation amount.     * @param m_indentAmount The m_indentAmount to set     */    public void setIndentAmount(int m_indentAmount)    {        this.m_indentAmount = m_indentAmount;    }    /**     * Sets the value coming from the xsl:output indent stylesheet     * attribute.     * @param doIndent true if the output document should be indented to     * visually indicate its structure.     * @see XSLOutputAttributes#setIndent(boolean)     */    public void setIndent(boolean doIndent)    {        m_doIndent = doIndent;    }    /**     * 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 uri the URI of the namespace     * @param prefix the prefix associated with the given URI.     *      * @see ExtendedContentHandler#namespaceAfterStartElement(String, String)     */    public void namespaceAfterStartElement(String uri, String prefix)        throws SAXException    {        // default behavior is to do nothing    }    /**     * Return a {@link DOMSerializer} interface into this serializer. If the     * serializer does not support the {@link DOMSerializer} interface, it should     * return null.     *     * @return A {@link DOMSerializer} interface into this serializer,  or null     * if the serializer is not DOM capable     * @throws IOException An I/O exception occured     * @see Serializer#asDOMSerializer()     */    public DOMSerializer asDOMSerializer() throws IOException    {         return this;    }    /**     * Push a boolean state based on if the name of the current element     * is found in the list of qnames.  A state is only pushed if     * there were some cdata-section-names were specified.     * <p>     * Hidden parameters are the vector of qualified elements specified in     * cdata-section-names attribute, and the m_cdataSectionStates stack     * onto which whether the current element is in the list is pushed (true or     * false). Other hidden parameters are the current elements namespaceURI,     * localName and qName     */    protected boolean isCdataSection()    {        boolean b = false;        if (null != m_cdataSectionElements)        {            if (m_elemContext.m_elementLocalName == null)                m_elemContext.m_elementLocalName =                     getLocalName(m_elemContext.m_elementName);            if (m_elemContext.m_elementURI == null)            {                String prefix = getPrefixPart(m_elemContext.m_elementName);                if (prefix != null)                    m_elemContext.m_elementURI =                         m_prefixMap.lookupNamespace(prefix);            }            if ((null != m_elemContext.m_elementURI)                 && m_elemContext.m_elementURI.length() == 0)                m_elemContext.m_elementURI = null;            int nElems = m_cdataSectionElements.size();            // loop through 2 at a time, as these are pairs of URI and localName            for (int i = 0; i < nElems; i += 2)            {                String uri = (String) m_cdataSectionElements.elementAt(i);                String loc = (String) m_cdataSectionElements.elementAt(i + 1);                if (loc.equals(m_elemContext.m_elementLocalName)                    && subPartMatch(m_elemContext.m_elementURI, uri))                {                    b = true;                    break;                }            }        }        return b;    }    /**     * Tell if two strings are equal, without worry if the first string is null.     *     * @param p String reference, which may be null.     * @param t String reference, which may be null.     *     * @return true if strings are equal.     */    private static final boolean subPartMatch(String p, String t)    {        return (p == t) || ((null != p) && (p.equals(t)));    }    /**     * Returns the local name of a qualified name.      * If the name has no prefix,     * then it works as the identity (SAX2).      *      * @param qname a qualified name     * @return returns the prefix of the qualified name,     * or null if there is no prefix.     */    protected static final String getPrefixPart(String qname)    {        final int col = qname.indexOf(':');        return (col > 0) ? qname.substring(0, col) : null;        //return (col > 0) ? qname.substring(0,col) : "";    }    /**     * Some users of the serializer may need the current namespace mappings     * @return the current namespace mappings (prefix/uri)     * @see ExtendedContentHandler#getNamespaceMappings()     */    public NamespaceMappings getNamespaceMappings()    {        return m_prefixMap;    }    /**     * Returns the prefix currently pointing to the given URI (if any).     * @param namespaceURI the uri of the namespace in question     * @return a prefix pointing to the given URI (if any).     * @see ExtendedContentHandler#getPrefix(String)     */    public String getPrefix(String namespaceURI)    {        String prefix = m_prefixMap.lookupPrefix(namespaceURI);        return prefix;    }    /**     * Returns the URI of an element or attribute. Note that default namespaces     * do not apply directly to attributes.     * @param qname a qualified name     * @param isElement true if the qualified name is the name of      * an element.     * @return returns the namespace URI associated with the qualified name.     */    public String getNamespaceURI(String qname, boolean isElement)    {        String uri = EMPTYSTRING;        int col = qname.lastIndexOf(':');        final String prefix = (col > 0) ? qname.substring(0, col) : EMPTYSTRING;        if (!EMPTYSTRING.equals(prefix) || isElement)        {            if (m_prefixMap != null)            {                uri = m_prefixMap.lookupNamespace(prefix);                if (uri == null && !prefix.equals(XMLNS_PREFIX))                {                    throw new RuntimeException(                        Utils.messages.createMessage(                            MsgKey.ER_NAMESPACE_PREFIX,                            new Object[] { qname.substring(0, col) }  ));                }            }        }        return uri;    }    /**     * Returns the URI of prefix (if any)     * 	 * @param prefix the prefix whose URI is searched for     * @return the namespace URI currently associated with the     * prefix, null if the prefix is undefined.     */    public String getNamespaceURIFromPrefix(String prefix)    {        String uri = null;        if (m_prefixMap != null)            uri = m_prefixMap.lookupNamespace(prefix);        return uri;    }    /**     * Entity reference event.     *     * @param name Name of entity     *

⌨️ 快捷键说明

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