streamsource.java

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

JAVA
260
字号
/* * Copyright 2003 Sun Microsystems, Inc. All rights reserved. * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. *//* * @(#)StreamSource.java	1.14 03/01/23 */package javax.xml.transform.stream;import javax.xml.transform.Source;import java.io.InputStream;import java.io.Reader;import java.io.File;/** * Acts as an holder for a transformation Source in the form * of a stream of XML markup. * */public class StreamSource 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.stream.StreamSource/feature";    /**     * Zero-argument default constructor. If this constructor     * is used, and no other method is called, the transformer     * will assume an empty input tree, with a default root node.     */    public StreamSource() {}    /**     * Construct a StreamSource from a byte stream.  Normally,     * a stream should be used rather than a reader, so     * the XML parser can resolve character encoding specified     * by the XML declaration.     *     * <p>If this constructor is used to process a stylesheet, normally     * setSystemId should also be called, so that relative URI references     * can be resolved.</p>     *     * @param inputStream A valid InputStream reference to an XML stream.     */    public StreamSource(InputStream inputStream) {        setInputStream(inputStream);    }    /**     * Construct a StreamSource from a byte stream.  Normally,     * a stream should be used rather than a reader, so that     * the XML parser can resolve character encoding specified     * by the XML declaration.     *     * <p>This constructor allows the systemID to be set in addition     * to the input stream, which allows relative URIs     * to be processed.</p>     *     * @param inputStream A valid InputStream reference to an XML stream.     * @param systemId Must be a String that conforms to the URI syntax.     */    public StreamSource(InputStream inputStream, String systemId) {        setInputStream(inputStream);        setSystemId(systemId);    }    /**     * Construct a StreamSource from a character reader.  Normally,     * a stream should be used rather than a reader, so that     * the XML parser can resolve character encoding specified     * by the XML declaration.  However, in many cases the encoding     * of the input stream is already resolved, as in the case of     * reading XML from a StringReader.     *     * @param reader A valid Reader reference to an XML character stream.     */    public StreamSource(Reader reader) {        setReader(reader);    }    /**     * Construct a StreamSource from a character reader.  Normally,     * a stream should be used rather than a reader, so that     * the XML parser may resolve character encoding specified     * by the XML declaration.  However, in many cases the encoding     * of the input stream is already resolved, as in the case of     * reading XML from a StringReader.     *     * @param reader A valid Reader reference to an XML character stream.     * @param systemId Must be a String that conforms to the URI syntax.     */    public StreamSource(Reader reader, String systemId) {        setReader(reader);        setSystemId(systemId);    }    /**     * Construct a StreamSource from a URL.     *     * @param systemId Must be a String that conforms to the URI syntax.     */    public StreamSource(String systemId) {        this.systemId = systemId;    }    /**     * Construct a StreamSource from a File.     *     * @param f Must a non-null File reference.     */    public StreamSource(File f) {        setSystemId(f);    }    /**     * Set the byte stream to be used as input.  Normally,     * a stream should be used rather than a reader, so that     * the XML parser can resolve character encoding specified     * by the XML declaration.     *     * <p>If this Source object is used to process a stylesheet, normally     * setSystemId should also be called, so that relative URL references     * can be resolved.</p>     *     * @param inputStream A valid InputStream reference to an XML stream.     */    public void setInputStream(InputStream inputStream) {        this.inputStream = inputStream;    }    /**     * Get the byte stream that was set with setByteStream.     *     * @return The byte stream that was set with setByteStream, or null     * if setByteStream or the ByteStream constructor was not called.     */    public InputStream getInputStream() {        return inputStream;    }    /**     * Set the input to be a character reader.  Normally,     * a stream should be used rather than a reader, so that     * the XML parser can resolve character encoding specified     * by the XML declaration.  However, in many cases the encoding     * of the input stream is already resolved, as in the case of     * reading XML from a StringReader.     *     * @param reader A valid Reader reference to an XML CharacterStream.     */    public void setReader(Reader reader) {        this.reader = reader;    }    /**     * Get the character stream that was set with setReader.     *     * @return The character stream that was set with setReader, or null     * if setReader or the Reader constructor was not called.     */    public Reader getReader() {        return reader;    }    /**     * Set the public identifier for this Source.     *     * <p>The public identifier is always optional: if the application     * writer includes one, it will be provided as part of the     * location information.</p>     *     * @param publicId The public identifier as a string.     */    public void setPublicId(String publicId) {        this.publicId = publicId;    }    /**     * Get the public identifier that was set with setPublicId.     *     * @return The public identifier that was set with setPublicId, or null     * if setPublicId was not called.     */    public String getPublicId() {        return publicId;    }    /**     * Set the system identifier for this 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     * there is no byte stream or character stream specified).</p>     *     * @param systemId The system identifier as a URL string.     */    public void setSystemId(String systemId) {        this.systemId = systemId;    }    /**     * Get the system identifier that was set with setSystemId.     *     * @return The system identifier that was set with setSystemId, or null     * if setSystemId was not called.     */    public String getSystemId() {        return systemId;    }    /**     * Set the system ID from a File reference.     *     * @param f Must a non-null File reference.     */    public void setSystemId(File f) {	String fpath=f.getAbsolutePath();	if (File.separatorChar != '/') {	    fpath = fpath.replace(File.separatorChar, '/');	}        if( fpath.startsWith("/"))	  this.systemId= "file://" + fpath;	else	  this.systemId = "file:///" + fpath;    }    //////////////////////////////////////////////////////////////////////    // Internal state.    //////////////////////////////////////////////////////////////////////    /**     * The public identifier for this input source, or null.     */    private String publicId;    /**     * The system identifier as a URL string, or null.     */    private String systemId;    /**     * The byte stream for this Source, or null.     */    private InputStream inputStream;    /**     * The character stream for this Source, or null.     */    private Reader reader;}

⌨️ 快捷键说明

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