Example usage for javax.xml.transform OutputKeys METHOD

List of usage examples for javax.xml.transform OutputKeys METHOD

Introduction

In this page you can find the example usage for javax.xml.transform OutputKeys METHOD.

Prototype

String METHOD

To view the source code for javax.xml.transform OutputKeys METHOD.

Click Source Link

Document

method = "xml" | "html" | "text" | expanded name.

Usage

From source file:org.apache.solr.handler.dataimport.CustomTikaEntityProcessor.java

private static ContentHandler getXmlContentHandler(Writer writer) throws TransformerConfigurationException {
    SAXTransformerFactory factory = (SAXTransformerFactory) TransformerFactory.newInstance();
    TransformerHandler handler = factory.newTransformerHandler();
    handler.getTransformer().setOutputProperty(OutputKeys.METHOD, "xml");
    handler.setResult(new StreamResult(writer));
    return handler;
}

From source file:org.apache.solr.handler.dataimport.TikaEntityProcessor.java

private static ContentHandler getHtmlHandler(Writer writer) throws TransformerConfigurationException {
    SAXTransformerFactory factory = (SAXTransformerFactory) TransformerFactory.newInstance();
    TransformerHandler handler = factory.newTransformerHandler();
    handler.getTransformer().setOutputProperty(OutputKeys.METHOD, "html");
    handler.setResult(new StreamResult(writer));
    return new ContentHandlerDecorator(handler) {
        @Override//  w  ww .j  av a2 s  . c  o  m
        public void startElement(String uri, String localName, String name, Attributes atts)
                throws SAXException {
            if (XHTMLContentHandler.XHTML.equals(uri)) {
                uri = null;
            }
            if (!"head".equals(localName)) {
                super.startElement(uri, localName, name, atts);
            }
        }

        @Override
        public void endElement(String uri, String localName, String name) throws SAXException {
            if (XHTMLContentHandler.XHTML.equals(uri)) {
                uri = null;
            }
            if (!"head".equals(localName)) {
                super.endElement(uri, localName, name);
            }
        }

        @Override
        public void startPrefixMapping(String prefix, String uri) {
            /*no op*/ }

        @Override
        public void endPrefixMapping(String prefix) {
            /*no op*/ }
    };
}

From source file:org.apache.synapse.mediators.transform.XSLTMediator.java

/**
 * Perform actual XSLT transformation//from   ww  w  .java  2s .  c  o m
 * @param synCtx current message
 * @param synLog the logger to be used
 */
private void performXSLT(MessageContext synCtx, SynapseLog synLog) {

    OMNode sourceNode = source.selectOMNode(synCtx, synLog);
    boolean isSoapEnvelope = (sourceNode == synCtx.getEnvelope());
    boolean isSoapBody = (sourceNode == synCtx.getEnvelope().getBody());
    boolean isSoapHeader = (sourceNode == synCtx.getEnvelope().getHeader());

    // Derive actual key from message context
    String generatedXsltKey = xsltKey.evaluateValue(synCtx);

    // get templates from generatedXsltKey
    Templates cachedTemplates = null;

    if (synLog.isTraceTraceEnabled()) {
        synLog.traceTrace("Transformation source : " + sourceNode.toString());
    }

    // determine if it is needed to create or create the template
    if (isCreationOrRecreationRequired(synCtx)) {
        // many threads can see this and come here for acquiring the lock
        synchronized (transformerLock) {
            // only first thread should create the template
            if (isCreationOrRecreationRequired(synCtx)) {
                cachedTemplates = createTemplate(synCtx, synLog, generatedXsltKey);
            } else {
                cachedTemplates = cachedTemplatesMap.get(generatedXsltKey);
            }
        }
    } else {
        //If already cached template then load it from cachedTemplatesMap
        synchronized (transformerLock) {
            cachedTemplates = cachedTemplatesMap.get(generatedXsltKey);
        }
    }

    try {
        // perform transformation
        Transformer transformer = null;
        try {
            transformer = cachedTemplates.newTransformer();
        } catch (NullPointerException ex) {
            handleException("Unable to create Transformer using cached template", ex, synCtx);
        }
        if (!properties.isEmpty()) {
            // set the parameters which will pass to the Transformation
            applyProperties(transformer, synCtx, synLog);
        }

        transformer.setErrorListener(new ErrorListenerImpl(synLog, XSLT_TRANSFORMATION_ACTIVITY));

        String outputMethod = transformer.getOutputProperty(OutputKeys.METHOD);
        String encoding = transformer.getOutputProperty(OutputKeys.ENCODING);

        if (synLog.isTraceOrDebugEnabled()) {
            synLog.traceOrDebug("output method: " + outputMethod + "; encoding: " + encoding);
        }

        ResultBuilderFactory.Output output;
        if ("text".equals(outputMethod)) {
            synLog.traceOrDebug("Processing non SOAP/XML (text) transformation result");
            output = ResultBuilderFactory.Output.TEXT;
        } else if (isSoapEnvelope) {
            output = ResultBuilderFactory.Output.SOAP_ENVELOPE;
        } else {
            output = ResultBuilderFactory.Output.ELEMENT;
        }

        SynapseEnvironment synEnv = synCtx.getEnvironment();
        ResultBuilder resultBuilder = resultBuilderFactory.createResultBuilder(synEnv, output);
        SourceBuilder sourceBuilder = sourceBuilderFactory.createSourceBuilder(synEnv);

        if (synLog.isTraceOrDebugEnabled()) {
            synLog.traceOrDebug("Using " + sourceBuilder.getClass().getName());
            synLog.traceOrDebug("Using " + resultBuilder.getClass().getName());
        }

        try {
            transformer.transform(sourceBuilder.getSource((OMElement) sourceNode), resultBuilder.getResult());
        } finally {
            sourceBuilder.release();
        }

        synLog.traceOrDebug("Transformation completed - processing result");

        /**
         * If user have set transform.xslt.result.disableBuild property to true, we do not build the message to
         * OMElement,
         */
        if (targetPropertyName != null && resultBuilder instanceof StreamResultBuilder
                && synCtx.getProperty(TRANSFORM_XSLT_RESULT_DISABLE_BUILD) != null
                && synCtx.getProperty(TRANSFORM_XSLT_RESULT_DISABLE_BUILD) instanceof String
                && "true".equalsIgnoreCase((String) synCtx.getProperty(TRANSFORM_XSLT_RESULT_DISABLE_BUILD))) {

            // add result XML string as a message context property to the message
            if (synLog.isTraceOrDebugEnabled()) {
                synLog.traceOrDebug("Adding result string as message context property : " + targetPropertyName);
            }

            synCtx.setProperty(targetPropertyName, ((StreamResultBuilder) resultBuilder).getResultAsString());
            return;
        }

        // get the result OMElement
        OMElement result = null;
        try {
            result = resultBuilder.getNode(encoding == null ? null : Charset.forName(encoding));
        } catch (Exception e) {
            throw new SynapseException("Unable to create an OMElement using XSLT result ", e);
        }

        if (synLog.isTraceTraceEnabled()) {
            synLog.traceTrace("Transformation result : " + result.toString());
        }

        if (targetPropertyName != null) {
            // add result XML as a message context property to the message
            if (synLog.isTraceOrDebugEnabled()) {
                synLog.traceOrDebug("Adding result as message context property : " + targetPropertyName);
            }
            synCtx.setProperty(targetPropertyName, result);
        } else {
            if (synLog.isTraceOrDebugEnabled()) {
                synLog.traceOrDebug(
                        "Replace " + (isSoapEnvelope ? "SOAP envelope" : isSoapBody ? "SOAP body" : "node")
                                + " with result");
            }

            if (isSoapEnvelope) {
                try {
                    synCtx.setEnvelope((SOAPEnvelope) result);
                } catch (AxisFault ex) {
                    handleException("Unable to replace SOAP envelope with result", ex, synCtx);
                }

            } else if (isSoapBody) {
                for (Iterator itr = synCtx.getEnvelope().getBody().getChildElements(); itr.hasNext();) {
                    OMElement child = (OMElement) itr.next();
                    child.detach();
                }

                for (Iterator itr = result.getChildElements(); itr.hasNext();) {
                    OMElement child = (OMElement) itr.next();
                    synCtx.getEnvelope().getBody().addChild(child);
                }

            } else if (isSoapHeader) {
                for (Iterator itr = synCtx.getEnvelope().getHeader().getChildElements(); itr.hasNext();) {
                    OMElement child = (OMElement) itr.next();
                    child.detach();
                }

                for (Iterator itr = result.getChildElements(); itr.hasNext();) {
                    OMElement child = (OMElement) itr.next();
                    synCtx.getEnvelope().getHeader().addChild(child);
                }

            } else {
                sourceNode.insertSiblingAfter(result);
                sourceNode.detach();
            }
        }

    } catch (TransformerException e) {
        handleException("Error performing XSLT transformation using : " + xsltKey, e, synCtx);
    }
}

From source file:org.apache.syncope.installer.utilities.FileSystemUtils.java

public static void writeXML(final Document doc, final OutputStream out)
        throws IOException, TransformerException {
    final TransformerFactory factory = TransformerFactory.newInstance();
    factory.setFeature(javax.xml.XMLConstants.FEATURE_SECURE_PROCESSING, true);
    final Transformer transformer = factory.newTransformer();
    transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "no");
    transformer.setOutputProperty(OutputKeys.METHOD, "xml");
    transformer.setOutputProperty(OutputKeys.INDENT, "yes");
    transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8");
    transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "4");
    transformer.transform(new DOMSource(doc),
            new StreamResult(new OutputStreamWriter(out, Charset.forName("UTF-8"))));
    out.close();/*from   w w  w.ja va  2 s  . c  o  m*/
}

From source file:org.apache.tika.gui.TikaGUI.java

/**
 * Creates and returns a content handler that turns XHTML input to
 * simplified HTML output that can be correctly parsed and displayed
 * by {@link JEditorPane}./*ww  w  . j  a  va  2 s.  c o  m*/
 * <p>
 * The returned content handler is set to output <code>html</code>
 * to the given writer. The XHTML namespace is removed from the output
 * to prevent the serializer from using the &lt;tag/&gt; empty element
 * syntax that causes extra "&gt;" characters to be displayed.
 * The &lt;head&gt; tags are dropped to prevent the serializer from
 * generating a &lt;META&gt; content type tag that makes
 * {@link JEditorPane} fail thinking that the document character set
 * is inconsistent.
 * <p>
 * Additionally, it will use ImageSavingParser to re-write embedded:(image) 
 * image links to be file:///(temporary file) so that they can be loaded.
 *
 * @param writer output writer
 * @return HTML content handler
 * @throws TransformerConfigurationException if an error occurs
 */
private ContentHandler getHtmlHandler(Writer writer) throws TransformerConfigurationException {
    SAXTransformerFactory factory = (SAXTransformerFactory) SAXTransformerFactory.newInstance();
    TransformerHandler handler = factory.newTransformerHandler();
    handler.getTransformer().setOutputProperty(OutputKeys.METHOD, "html");
    handler.setResult(new StreamResult(writer));
    return new ContentHandlerDecorator(handler) {
        @Override
        public void startElement(String uri, String localName, String name, Attributes atts)
                throws SAXException {
            if (XHTMLContentHandler.XHTML.equals(uri)) {
                uri = null;
            }
            if (!"head".equals(localName)) {
                if ("img".equals(localName)) {
                    AttributesImpl newAttrs;
                    if (atts instanceof AttributesImpl) {
                        newAttrs = (AttributesImpl) atts;
                    } else {
                        newAttrs = new AttributesImpl(atts);
                    }

                    for (int i = 0; i < newAttrs.getLength(); i++) {
                        if ("src".equals(newAttrs.getLocalName(i))) {
                            String src = newAttrs.getValue(i);
                            if (src.startsWith("embedded:")) {
                                String filename = src.substring(src.indexOf(':') + 1);
                                try {
                                    File img = imageParser.requestSave(filename);
                                    String newSrc = img.toURI().toString();
                                    newAttrs.setValue(i, newSrc);
                                } catch (IOException e) {
                                    System.err.println("Error creating temp image file " + filename);
                                    // The html viewer will show a broken image too to alert them
                                }
                            }
                        }
                    }
                    super.startElement(uri, localName, name, newAttrs);
                } else {
                    super.startElement(uri, localName, name, atts);
                }
            }
        }

        @Override
        public void endElement(String uri, String localName, String name) throws SAXException {
            if (XHTMLContentHandler.XHTML.equals(uri)) {
                uri = null;
            }
            if (!"head".equals(localName)) {
                super.endElement(uri, localName, name);
            }
        }

        @Override
        public void startPrefixMapping(String prefix, String uri) {
        }

        @Override
        public void endPrefixMapping(String prefix) {
        }
    };
}

From source file:org.apache.tika.gui.TikaGUI.java

private ContentHandler getXmlContentHandler(Writer writer) throws TransformerConfigurationException {
    SAXTransformerFactory factory = (SAXTransformerFactory) SAXTransformerFactory.newInstance();
    TransformerHandler handler = factory.newTransformerHandler();
    handler.getTransformer().setOutputProperty(OutputKeys.METHOD, "xml");
    handler.setResult(new StreamResult(writer));
    return handler;
}

From source file:org.apache.tika.server.resource.TikaResource.java

private StreamingOutput produceOutput(final InputStream is, final MultivaluedMap<String, String> httpHeaders,
        final UriInfo info, final String format) {
    final Parser parser = createParser();
    final Metadata metadata = new Metadata();
    final ParseContext context = new ParseContext();

    fillMetadata(parser, metadata, context, httpHeaders);
    fillParseContext(context, httpHeaders, parser);

    logRequest(LOG, info, metadata);//from   ww w . j a  v a2  s. c om

    return new StreamingOutput() {
        public void write(OutputStream outputStream) throws IOException, WebApplicationException {
            Writer writer = new OutputStreamWriter(outputStream, UTF_8);
            ContentHandler content;

            try {
                SAXTransformerFactory factory = (SAXTransformerFactory) SAXTransformerFactory.newInstance();
                TransformerHandler handler = factory.newTransformerHandler();
                handler.getTransformer().setOutputProperty(OutputKeys.METHOD, format);
                handler.getTransformer().setOutputProperty(OutputKeys.INDENT, "yes");
                handler.getTransformer().setOutputProperty(OutputKeys.ENCODING, UTF_8.name());
                handler.setResult(new StreamResult(writer));
                content = new ExpandedTitleContentHandler(handler);
            } catch (TransformerConfigurationException e) {
                throw new WebApplicationException(e);
            }

            parse(parser, LOG, info.getPath(), is, content, metadata, context);
        }
    };
}

From source file:org.broadleafcommerce.common.extensibility.context.merge.ImportProcessor.java

public ResourceInputStream[] extract(ResourceInputStream[] sources) throws MergeException {
    if (sources == null) {
        return null;
    }//from  w w w .ja v a  2 s.  c om
    try {
        DynamicResourceIterator resourceList = new DynamicResourceIterator();
        resourceList.addAll(Arrays.asList(sources));
        while (resourceList.hasNext()) {
            ResourceInputStream myStream = resourceList.nextResource();
            Document doc = builder.parse(myStream);
            NodeList nodeList = (NodeList) xPath.evaluate(IMPORT_PATH, doc, XPathConstants.NODESET);
            int length = nodeList.getLength();
            for (int j = 0; j < length; j++) {
                Element element = (Element) nodeList.item(j);
                Resource resource = loader.getResource(element.getAttribute("resource"));
                ResourceInputStream ris = new ResourceInputStream(resource.getInputStream(),
                        resource.getURL().toString());
                resourceList.addEmbeddedResource(ris);
                element.getParentNode().removeChild(element);
            }
            if (length > 0) {
                TransformerFactory tFactory = TransformerFactory.newInstance();
                Transformer xmlTransformer = tFactory.newTransformer();
                xmlTransformer.setOutputProperty(OutputKeys.VERSION, "1.0");
                xmlTransformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8");
                xmlTransformer.setOutputProperty(OutputKeys.METHOD, "xml");
                xmlTransformer.setOutputProperty(OutputKeys.INDENT, "yes");

                DOMSource source = new DOMSource(doc);
                ByteArrayOutputStream baos = new ByteArrayOutputStream();
                BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(baos));
                StreamResult result = new StreamResult(writer);
                xmlTransformer.transform(source, result);

                byte[] itemArray = baos.toByteArray();

                resourceList.set(resourceList.getPosition() - 1, new ResourceInputStream(
                        new ByteArrayInputStream(itemArray), null, myStream.getNames()));
            } else {
                myStream.reset();
            }
        }

        return resourceList.toArray(new ResourceInputStream[resourceList.size()]);
    } catch (Exception e) {
        throw new MergeException(e);
    }
}

From source file:org.broadleafcommerce.common.extensibility.context.merge.MergeManager.java

/**
 * Merge 2 xml document streams together into a final resulting stream. During
 * the merge, various merge business rules are followed based on configuration
 * defined for various merge points./*  w ww  . j av  a2 s.c om*/
 *
 * @param stream1
 * @param stream2
 * @return the stream representing the merged document
 * @throws org.broadleafcommerce.common.extensibility.context.merge.exceptions.MergeException
 */
public ResourceInputStream merge(ResourceInputStream stream1, ResourceInputStream stream2)
        throws MergeException {
    try {
        Document doc1 = builder.parse(stream1);
        Document doc2 = builder.parse(stream2);

        List<Node> exhaustedNodes = new ArrayList<Node>();

        //process any defined handlers
        for (MergeHandler handler : this.handlers) {
            if (LOG.isDebugEnabled()) {
                LOG.debug("Processing handler: " + handler.getXPath());
            }
            MergePoint point = new MergePoint(handler, doc1, doc2);
            Node[] list = point.merge(exhaustedNodes);
            if (list != null) {
                Collections.addAll(exhaustedNodes, list);
            }
        }

        TransformerFactory tFactory = TransformerFactory.newInstance();
        Transformer xmlTransformer = tFactory.newTransformer();
        xmlTransformer.setOutputProperty(OutputKeys.VERSION, "1.0");
        xmlTransformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8");
        xmlTransformer.setOutputProperty(OutputKeys.METHOD, "xml");
        xmlTransformer.setOutputProperty(OutputKeys.INDENT, "yes");

        DOMSource source = new DOMSource(doc1);
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(baos, "UTF-8"));
        StreamResult result = new StreamResult(writer);
        xmlTransformer.transform(source, result);

        byte[] itemArray = baos.toByteArray();

        return new ResourceInputStream(new ByteArrayInputStream(itemArray), stream2.getName(),
                stream1.getNames());
    } catch (Exception e) {
        throw new MergeException(e);
    }
}

From source file:org.chiba.xml.xforms.ChibaBean.java

public void writeExternal(ObjectOutput objectOutput) throws IOException {
    DefaultSerializer serializer = new DefaultSerializer(this);
    Document serializedForm = serializer.serialize();

    StringWriter stringWriter = new StringWriter();
    Transformer transformer = null;
    StreamResult result = new StreamResult(stringWriter);
    try {/*from   w w  w.j a v a2s .  c  om*/
        transformer = TransformerFactory.newInstance().newTransformer();
        transformer.setOutputProperty(OutputKeys.METHOD, "xml");
        transformer.transform(new DOMSource(serializedForm), result);
    } catch (TransformerConfigurationException e) {
        throw new IOException("TransformerConfiguration invalid: " + e.getMessage());
    } catch (TransformerException e) {
        throw new IOException("Error during serialization transform: " + e.getMessage());
    }
    objectOutput.writeUTF(stringWriter.getBuffer().toString());
    objectOutput.flush();
    objectOutput.close();

}