Main.java Source code

Java tutorial

Introduction

Here is the source code for Main.java

Source

//package com.java2s;
/*
 * Copyright 2007-2012 AjaxTags-Team
 *
 *
 * 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.
 */

import java.io.StringWriter;

import javax.xml.transform.OutputKeys;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;

import org.w3c.dom.Document;

public class Main {
    /** Value for transformer output properties. */
    private static final String TRANSFORMER_YES = "yes";
    /** TransformerFactory. */
    private static final ThreadLocal<TransformerFactory> TRANSFORMER_FACTORY = new ThreadLocal<TransformerFactory>() {
        @Override
        protected TransformerFactory initialValue() {
            return TransformerFactory.newInstance();
        }
    };

    /**
     * Transform document to string representation.
     *
     * @param document
     *            XHTML document
     * @return string representation of document
     * @throws TransformerException
     *             if it is not possible to create a Transformer instance or to transform document
     */
    public static String toString(final Document document) throws TransformerException {
        final StringWriter stringWriter = new StringWriter();
        final StreamResult streamResult = new StreamResult(stringWriter);
        final Transformer transformer = TRANSFORMER_FACTORY.get().newTransformer();
        transformer.setOutputProperty(OutputKeys.INDENT, TRANSFORMER_YES);
        // set indent for XML
        transformer.setOutputProperty("{http://xml.apache.org/xalan}indent-amount", "2");
        // not all JavaSE have the same implementation
        transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "2");
        // transformer.setOutputProperty(OutputKeys.METHOD, "html");
        // html method transforms <br/> into <br>, which cannot be re-parsed
        // transformer.setOutputProperty(OutputKeys.METHOD, "xhtml");
        // xhtml method does not work for my xalan transformer
        transformer.setOutputProperty(OutputKeys.METHOD, "xml");
        transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, TRANSFORMER_YES);
        transformer.transform(new DOMSource(document.getDocumentElement()), streamResult);
        return stringWriter.toString();
    }
}