Java XML Document Format formatXML(Document xml, Document xsl)

Here you can find the source of formatXML(Document xml, Document xsl)

Description

format XML

License

Apache License

Declaration

public static Document formatXML(Document xml, Document xsl) throws Exception 

Method Source Code

//package com.java2s;
/* ************************************************************************** *
 * See the NOTICE file distributed with this work for additional information
 * regarding copyright ownership./*  w w  w  . j  a  va  2  s.c om*/
 *
 * This file is licensed to you 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.Reader;

import java.io.Writer;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.Source;
import javax.xml.transform.Templates;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerConfigurationException;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.TransformerFactoryConfigurationError;
import javax.xml.transform.URIResolver;
import javax.xml.transform.dom.DOMResult;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import javax.xml.transform.stream.StreamSource;

import org.w3c.dom.Document;

public class Main {
    public static Document formatXML(Document xml, Document xsl) throws Exception {
        TransformerFactory factory = TransformerFactory.newInstance();
        DOMSource xslSource = new DOMSource(xsl);
        Templates t = factory.newTemplates(xslSource);
        Transformer transformer = t.newTransformer();
        return formatXML(xml, transformer);
    }

    public static void formatXML(Document doc, Document xsl, Writer writer) throws Exception {
        DOMSource xmlSource = new DOMSource(doc);
        DOMSource xslSource = new DOMSource(xsl);
        formatXML(xmlSource, xslSource, writer);
        writer.flush();
    }

    public static void formatXML(Document doc, Reader xslStream, Writer writer) throws Exception {
        DOMSource xmlSource = new DOMSource(doc);
        StreamSource xslSource = new StreamSource(xslStream);
        formatXML(xmlSource, xslSource, writer);
        writer.flush();
    }

    public static Document formatXML(Document xml, Transformer transformer) throws Exception {
        DOMSource xmlSource = new DOMSource(xml);
        Document resultDoc = newDocument();
        DOMResult result = new DOMResult(resultDoc);
        transformer.transform(xmlSource, result);
        return resultDoc;
    }

    public static Document formatXML(Document xml, URIResolver resolver, Document xsl) throws Exception {
        DOMSource xslSource = new DOMSource(xsl);
        return format(xslSource, xml, resolver);
    }

    public static void formatXML(Document xml, URIResolver resolver, Document xsl, Writer output) throws Exception {
        StreamResult result = new StreamResult(output);
        DOMSource xslSource = new DOMSource(xsl);
        TransformerFactory factory = TransformerFactory.newInstance();
        DOMSource xmlSource = new DOMSource(xml);
        Templates t = factory.newTemplates(xslSource);
        Transformer transformer = t.newTransformer();
        transformer.setURIResolver(resolver);
        transformer.transform(xmlSource, result);
    }

    public static Document formatXML(Document xml, URIResolver resolver, String... xsls) throws Exception {
        TransformerFactory factory = TransformerFactory.newInstance();
        for (String xsl : xsls) {
            DOMSource xmlSource = new DOMSource(xml);
            Source xslSource = resolver.resolve(xsl, "");
            Templates t = factory.newTemplates(xslSource);
            Transformer transformer = t.newTransformer();
            transformer.setURIResolver(resolver);
            Document resultDoc = newDocument();
            DOMResult result = new DOMResult(resultDoc);
            transformer.transform(xmlSource, result);
            xml = resultDoc;
        }
        return xml;
    }

    private static void formatXML(Source xmlSource, Source xslSource, Writer output) throws Exception {
        TransformerFactory factory = TransformerFactory.newInstance();
        Templates t = factory.newTemplates(xslSource);
        Transformer transformer = t.newTransformer();
        StreamResult result = new StreamResult(output);
        transformer.transform(xmlSource, result);
    }

    /**
     * Creates and returns a new empty DOM document.
     * 
     * @return a newly created DOM document
     * @throws ParserConfigurationException
     */
    public static Document newDocument() throws Exception {
        DocumentBuilder builder = getDocumentBuilder(true);
        return builder.newDocument();
    }

    public static Document format(Source xslSource, Document xml, URIResolver resolver)
            throws TransformerFactoryConfigurationError, TransformerConfigurationException, Exception,
            TransformerException {
        TransformerFactory factory = TransformerFactory.newInstance();
        DOMSource xmlSource = new DOMSource(xml);
        Templates t = factory.newTemplates(xslSource);
        Transformer transformer = t.newTransformer();
        transformer.setURIResolver(resolver);
        Document resultDoc = newDocument();
        DOMResult result = new DOMResult(resultDoc);
        transformer.transform(xmlSource, result);
        return resultDoc;
    }

    /**
     * Creates and returns an new document builder factory. This method tries to
     * configure the namespace support for the builder. If the underlying parser
     * does not support namespaces then this method returns a simple
     * DocumentBuilder object.
     * 
     * @return a new document builder
     * @throws ParserConfigurationException
     */
    private static DocumentBuilder getDocumentBuilder(boolean isNamespaceAware)
            throws ParserConfigurationException {
        DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
        factory.setNamespaceAware(isNamespaceAware); // never forget this!
        try {
            factory.setFeature("http://xml.org/sax/features/namespaces", isNamespaceAware);
        } catch (Throwable t) {
            // Just skip it...
        }
        DocumentBuilder builder = factory.newDocumentBuilder();
        return builder;
    }
}

Related

  1. formatElementEnd( Document document, Element element, String formatString)
  2. formatElementStart( Document document, Element element, String formatString)
  3. formatNode(Document doc, Node parent, Node node)
  4. formatPython(int start, Document doc, String s)
  5. formatXML(Document document, org.w3c.dom.Element root, String tab)
  6. formatXML(Document xml, Document xsl, URIResolver resolver, Writer output)
  7. pretty(Document document, OutputStream outputStream, int indent)
  8. prettyFormat(Document doc)
  9. prettyPrint(Document doc)