Search in sources :

Example 16 with OutputProperties

use of org.apache.xalan.templates.OutputProperties in project robovm by robovm.

the class SerializerSwitcher method switchSerializerIfHTML.

/**
   * Switch to HTML serializer if element is HTML
   *
   *
   * @param transformer Non-null transformer instance
   * @param ns Namespace URI of the element
   * @param localName Local part of name of element
   *
   * @throws TransformerException
   */
public static void switchSerializerIfHTML(TransformerImpl transformer, String ns, String localName) throws TransformerException {
    if (null == transformer)
        return;
    if (((null == ns) || (ns.length() == 0)) && localName.equalsIgnoreCase("html")) {
        // Access at level of hashtable to see if the method has been set.
        if (null != transformer.getOutputPropertyNoDefault(OutputKeys.METHOD))
            return;
        // Getting the output properties this way won't cause a clone of 
        // the properties.
        Properties prevProperties = transformer.getOutputFormat().getProperties();
        // We have to make sure we get an output properties with the proper 
        // defaults for the HTML method.  The easiest way to do this is to 
        // have the OutputProperties class do it.
        OutputProperties htmlOutputProperties = new OutputProperties(Method.HTML);
        htmlOutputProperties.copyFrom(prevProperties, true);
        Properties htmlProperties = htmlOutputProperties.getProperties();
        try {
            //        Serializer oldSerializer = transformer.getSerializer();
            Serializer oldSerializer = null;
            if (null != oldSerializer) {
                Serializer serializer = SerializerFactory.getSerializer(htmlProperties);
                Writer writer = oldSerializer.getWriter();
                if (null != writer)
                    serializer.setWriter(writer);
                else {
                    OutputStream os = oldSerializer.getOutputStream();
                    if (null != os)
                        serializer.setOutputStream(os);
                }
                //          transformer.setSerializer(serializer);
                ContentHandler ch = serializer.asContentHandler();
                transformer.setContentHandler(ch);
            }
        } catch (java.io.IOException e) {
            throw new TransformerException(e);
        }
    }
}
Also used : OutputStream(java.io.OutputStream) OutputProperties(org.apache.xalan.templates.OutputProperties) Properties(java.util.Properties) OutputProperties(org.apache.xalan.templates.OutputProperties) Writer(java.io.Writer) ContentHandler(org.xml.sax.ContentHandler) TransformerException(javax.xml.transform.TransformerException) Serializer(org.apache.xml.serializer.Serializer)

Aggregations

OutputProperties (org.apache.xalan.templates.OutputProperties)16 OutputStream (java.io.OutputStream)4 Writer (java.io.Writer)4 Properties (java.util.Properties)4 TransformerException (javax.xml.transform.TransformerException)4 Serializer (org.apache.xml.serializer.Serializer)4 ElemTemplateElement (org.apache.xalan.templates.ElemTemplateElement)2 ContentHandler (org.xml.sax.ContentHandler)2