saxsource.java

来自「java jdk 1.4的源码」· Java 代码 · 共 183 行

JAVA
183
字号
/* * Copyright 2003 Sun Microsystems, Inc. All rights reserved. * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. *//* * @(#)SAXSource.java	1.13 03/01/23 */package javax.xml.transform.sax;import javax.xml.transform.Source;import javax.xml.transform.stream.StreamSource;import java.lang.String;import java.io.OutputStream;import java.io.Writer;import org.xml.sax.XMLReader;import org.xml.sax.ext.DeclHandler;import org.xml.sax.ext.LexicalHandler;import org.xml.sax.InputSource;/** * Acts as an holder for SAX-style Source. */public class SAXSource implements Source {    /**     * If {@link javax.xml.transform.TransformerFactory#getFeature}     * returns true when passed this value as an argument,     * the Transformer supports Source input of this type.     */    public static final String FEATURE =        "http://javax.xml.transform.sax.SAXSource/feature";    /**     * Zero-argument default constructor.  If this constructor     * is used, and no other method is called, the     * {@link javax.xml.transform.Transformer}     * assumes an empty input tree, with a default root node.     */    public SAXSource() {}    /**     * Create a <code>SAXSource</code>, using an {@link org.xml.sax.XMLReader}     * and a SAX InputSource. The {@link javax.xml.transform.Transformer}     * or {@link javax.xml.transform.sax.SAXTransformerFactory} will set itself     * to be the reader's {@link org.xml.sax.ContentHandler}, and then will call     * reader.parse(inputSource).     *     * @param reader An XMLReader to be used for the parse.     * @param inputSource A SAX input source reference that must be non-null     * and that will be passed to the reader parse method.     */    public SAXSource(XMLReader reader, InputSource inputSource) {        this.reader      = reader;        this.inputSource = inputSource;    }    /**     * Create a <code>SAXSource</code>, using a SAX <code>InputSource</code>.     * The {@link javax.xml.transform.Transformer} or     * {@link javax.xml.transform.sax.SAXTransformerFactory} creates a     * reader via {@link org.xml.sax.helpers.XMLReaderFactory}     * (if setXMLReader is not used), sets itself as     * the reader's {@link org.xml.sax.ContentHandler}, and calls     * reader.parse(inputSource).     *     * @param inputSource An input source reference that must be non-null     * and that will be passed to the parse method of the reader.     */    public SAXSource(InputSource inputSource) {        this.inputSource = inputSource;    }    /**     * Set the XMLReader to be used for the Source.     *     * @param reader A valid XMLReader or XMLFilter reference.     */    public void setXMLReader(XMLReader reader) {        this.reader = reader;    }    /**     * Get the XMLReader to be used for the Source.     *     * @return A valid XMLReader or XMLFilter reference, or null.     */    public XMLReader getXMLReader() {        return reader;    }    /**     * Set the SAX InputSource to be used for the Source.     *     * @param inputSource A valid InputSource reference.     */    public void setInputSource(InputSource inputSource) {        this.inputSource = inputSource;    }    /**     * Get the SAX InputSource to be used for the Source.     *     * @return A valid InputSource reference, or null.     */    public InputSource getInputSource() {        return inputSource;    }    /**     * Set the system identifier for this Source.  If an input source     * has already been set, it will set the system ID or that     * input source, otherwise it will create a new input source.     *     * <p>The system identifier is optional if there is a byte stream     * or a character stream, but it is still useful to provide one,     * since the application can use it to resolve relative URIs     * and can include it in error messages and warnings (the parser     * will attempt to open a connection to the URI only if     * no byte stream or character stream is specified).</p>     *     * @param systemId The system identifier as a URI string.     */    public void setSystemId(String systemId) {        if (null == inputSource) {            inputSource = new InputSource(systemId);        } else {            inputSource.setSystemId(systemId);        }    }    /**     * Get the base ID (URI or system ID) from where URIs     * will be resolved.     *     * @return Base URL for the Source, or null.     */    public String getSystemId() {        return (null != inputSource)               ? inputSource.getSystemId()               : null;    }    /** The XMLReader to be used for the source tree input. May be null.        */    private XMLReader reader;    /** The SAX InputSource to be used for the source tree input.  Should not be null. */    private InputSource inputSource;    /**     * Attempt to obtain a SAX InputSource object from a TrAX Source     * object.     *     * @param source Must be a non-null Source reference.     *     * @return An InputSource, or null if Source can not be converted.     */    public static InputSource sourceToInputSource(Source source) {        if (source instanceof SAXSource) {            return ((SAXSource) source).getInputSource();        } else if (source instanceof StreamSource) {            StreamSource ss      = (StreamSource) source;            InputSource  isource = new InputSource(ss.getSystemId());            isource.setByteStream(ss.getInputStream());            isource.setCharacterStream(ss.getReader());            isource.setPublicId(ss.getPublicId());            return isource;        } else {            return null;        }    }}

⌨️ 快捷键说明

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