Java XML Document to String toString(final Document document)

Here you can find the source of toString(final Document document)

Description

Transform document to string representation.

License

Apache License

Parameter

Parameter Description
document XHTML document

Exception

Parameter Description
TransformerException if it is not possible to create a Transformer instance or to transform document

Return

string representation of document

Declaration

public static String toString(final Document document) throws TransformerException 

Method Source Code

//package com.java2s;
/*//from www . ja v  a2s  .c o  m
 * 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();
    }
}

Related

  1. toString(Document document)
  2. toString(Document document)
  3. toString(Document document)
  4. toString(Document document)
  5. toString(Document document)
  6. toString(final Document document)
  7. toString(final Document document, final boolean indent, final boolean omitXmlDeclaration)
  8. toString(Node document)
  9. toStringFromDoc(Document document)