transletoutputhandlerfactory.java

来自「JAVA的一些源码 JAVA2 STANDARD EDITION DEVELO」· Java 代码 · 共 223 行

JAVA
223
字号
/* * Copyright 2001-2004 The Apache Software Foundation. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * *     http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. *//* * $Id: TransletOutputHandlerFactory.java,v 1.16 2004/02/16 22:56:25 minchau Exp $ */package com.sun.org.apache.xalan.internal.xsltc.runtime.output;import java.io.IOException;import java.io.OutputStream;import java.io.Writer;import javax.xml.parsers.ParserConfigurationException;import com.sun.org.apache.xalan.internal.xsltc.trax.SAX2DOM;import com.sun.org.apache.xml.internal.serializer.ToHTMLSAXHandler;import com.sun.org.apache.xml.internal.serializer.ToHTMLStream;import com.sun.org.apache.xml.internal.serializer.ToTextSAXHandler;import com.sun.org.apache.xml.internal.serializer.ToTextStream;import com.sun.org.apache.xml.internal.serializer.ToUnknownStream;import com.sun.org.apache.xml.internal.serializer.ToXMLSAXHandler;import com.sun.org.apache.xml.internal.serializer.ToXMLStream;import com.sun.org.apache.xml.internal.serializer.SerializationHandler;import org.w3c.dom.Node;import org.xml.sax.ContentHandler;import org.xml.sax.ext.LexicalHandler;/** * @author Santiago Pericas-Geertsen */public class TransletOutputHandlerFactory {    public static final int STREAM = 0;    public static final int SAX    = 1;    public static final int DOM    = 2;    private String _encoding       = "utf-8";    private String _method         = null;    private int    _outputType     = STREAM;    private OutputStream _ostream  = System.out;    private Writer _writer         = null;    private Node           _node   = null;    private int _indentNumber      = -1;    private ContentHandler _handler    = null;    private LexicalHandler _lexHandler = null;    static public TransletOutputHandlerFactory newInstance() {	return new TransletOutputHandlerFactory();    }    public void setOutputType(int outputType) {	_outputType = outputType;    }    public void setEncoding(String encoding) {	if (encoding != null) {	    _encoding = encoding;	}    }    public void setOutputMethod(String method) {	_method = method;    }    public void setOutputStream(OutputStream ostream) {	_ostream = ostream;    }    public void setWriter(Writer writer) {	_writer = writer;    }    public void setHandler(ContentHandler handler) {        _handler = handler;    }    public void setLexicalHandler(LexicalHandler lex) {	_lexHandler = lex;    }    public void setNode(Node node) {	_node = node;    }    public Node getNode() {	return (_handler instanceof SAX2DOM) ? ((SAX2DOM)_handler).getDOM() 	   : null;    }    public void setIndentNumber(int value) {	_indentNumber = value;    }    public SerializationHandler getSerializationHandler()        throws IOException, ParserConfigurationException    {        SerializationHandler result = null;        switch (_outputType)        {            case STREAM :                if (_method == null)                {                    result = new ToUnknownStream();                }                else if (_method.equalsIgnoreCase("xml"))                {                    result = new ToXMLStream();                }                else if (_method.equalsIgnoreCase("html"))                {                    result = new ToHTMLStream();                }                else if (_method.equalsIgnoreCase("text"))                {                    result = new ToTextStream();                }                if (result != null && _indentNumber >= 0)                {                    result.setIndentAmount(_indentNumber);                }                result.setEncoding(_encoding);                if (_writer != null)                {                    result.setWriter(_writer);                }                else                {                    result.setOutputStream(_ostream);                }                return result;            case DOM :                _handler = (_node != null) ? new SAX2DOM(_node) : new SAX2DOM();                _lexHandler = (LexicalHandler) _handler;                // falls through            case SAX :                if (_method == null)                {                    _method = "xml"; // default case                }                if (_method.equalsIgnoreCase("xml"))                {                    if (_lexHandler == null)                    {                        result = new ToXMLSAXHandler(_handler, _encoding);                    }                    else                    {                        result =                            new ToXMLSAXHandler(                                _handler,                                _lexHandler,                                _encoding);                    }                }                else if (_method.equalsIgnoreCase("html"))                {                    if (_lexHandler == null)                    {                        result = new ToHTMLSAXHandler(_handler, _encoding);                    }                    else                    {                        result =                            new ToHTMLSAXHandler(                                _handler,                                _lexHandler,                                _encoding);                    }                }                else if (_method.equalsIgnoreCase("text"))                {                    if (_lexHandler == null)                    {                        result = new ToTextSAXHandler(_handler, _encoding);                    }                    else                    {                        result =                            new ToTextSAXHandler(                                _handler,                                _lexHandler,                                _encoding);                    }                }                return result;        }        return null;    }}

⌨️ 快捷键说明

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