Java XML Node to String toString(Node node)

Here you can find the source of toString(Node node)

Description

Transform a DOM Node into an XML String.

License

Open Source License

Parameter

Parameter Description
node the source

Exception

Parameter Description
TransformerException couldn't do it

Return

an XML String representation of the specified Node

Declaration

public static String toString(Node node) throws TransformerException 

Method Source Code

//package com.java2s;
/**/* w  w  w. j  a  v  a2s  .  c o  m*/
 * Copyright 2006 OCLC Online Computer Library Center 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 org.w3c.dom.Node;

import javax.xml.transform.*;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import javax.xml.transform.stream.StreamSource;

import java.io.InputStream;
import java.io.StringWriter;

public class Main {
    private static TransformerFactory tFactory = TransformerFactory
            .newInstance();

    /**
     * Transform a DOM Node into an XML String.
     *
     * @param node the source
     * @return an XML String representation of the specified Node
     * @throws TransformerException couldn't do it
     */
    public static String toString(Node node) throws TransformerException {
        return toString(node, true);
    }

    /**
     * Transform a DOM Node into an XML String
     *
     * @param node               the source
     * @param omitXMLDeclaration true if you don't want it
     * @return an XML String representation of the specified Node
     * @throws TransformerException couldn't get it
     */
    public static String toString(Node node, boolean omitXMLDeclaration)
            throws TransformerException {
        StringWriter writer = new StringWriter();
        Transformer transformer = getThreadedIdentityTransformer(omitXMLDeclaration);
        Source source = new DOMSource(node);
        Result result = new StreamResult(writer);
        transformer.transform(source, result);
        return writer.toString();
    }

    /**
     * Get a thread-safe Transformer without an assigned transform. This is useful
     * for transforming a DOM Document into XML text.
     *
     * @param omitXmlDeclaration true if you don't want it
     * @return an "identity" Transformer assigned to the current thread
     * @throws TransformerConfigurationException
     *          couldn't get it
     */
    public static Transformer getThreadedIdentityTransformer(
            boolean omitXmlDeclaration)
            throws TransformerConfigurationException {
        return getTransformer(omitXmlDeclaration, null);
    }

    /**
     * Get a thread-safe Transformer.
     *
     * @param omitXmlDeclaration true if you don't want it
     * @param xslURL             todo: explain
     * @return a thread-safe Transformer
     * @throws TransformerConfigurationException
     *
     */
    public static Transformer getTransformer(boolean omitXmlDeclaration,
            String xslURL) throws TransformerConfigurationException {
        return getTransformer(omitXmlDeclaration, true, xslURL);
    }

    /**
     * @param omitXmlDeclaration
     * @param standalone
     * @param xslURL
     * @return a Transformer for the specified XSL document
     * @throws TransformerConfigurationException
     *
     */
    public static Transformer getTransformer(boolean omitXmlDeclaration,
            boolean standalone, String xslURL)
            throws TransformerConfigurationException {
        Transformer transformer = null;
        if (xslURL == null) {
            transformer = tFactory.newTransformer(); // "never null"
        } else {
            Source xslSource = null;
            if (xslURL.startsWith("file://")) {
                InputStream is = Thread.currentThread()
                        .getContextClassLoader()
                        .getResourceAsStream(xslURL.substring(6));
                xslSource = new StreamSource(is);
            } else {
                xslSource = new StreamSource(xslURL);
            }
            transformer = tFactory.newTransformer(xslSource);
        }
        //      transformer.setOutputProperty(OutputKeys.INDENT, "yes");
        transformer.setOutputProperty(OutputKeys.STANDALONE,
                standalone ? "yes" : "no");
        transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION,
                omitXmlDeclaration ? "yes" : "no");
        return transformer;
    }
}

Related

  1. toString(Node node)
  2. toString(Node node)
  3. toString(Node node)
  4. toString(Node node)
  5. toString(Node node)
  6. toString(Node node)
  7. toString(Node node, boolean formatted)
  8. toString(Node node, int level, boolean indent)
  9. toString(Node node, Map outputProperties)