Main.java Source code

Java tutorial

Introduction

Here is the source code for Main.java

Source

//package com.java2s;
/*
 * Copyright 2009-2016 DigitalGlobe, Inc.
 *
 * 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.*;
import org.w3c.dom.ls.DOMImplementationLS;
import org.w3c.dom.ls.LSOutput;
import org.w3c.dom.ls.LSSerializer;

import java.io.*;

public class Main {
    public static String documentToString(Document doc) throws IOException {
        StringWriter writer = new StringWriter();
        writeDocument(doc, writer);
        return writer.toString();
    }

    public static void writeDocument(Document doc, Writer out) throws IOException {
        // happy to replace this code w/ the non-deprecated code, but I couldn't get the transformer 
        // approach to work. 
        //    OutputFormat format = new OutputFormat(doc);
        //    format.setIndenting(true);
        //    format.setIndent(2);
        //    XMLSerializer serializer = new XMLSerializer(out, format);
        //    serializer.serialize(doc);

        DOMImplementationLS impl = (DOMImplementationLS) doc.getImplementation();
        LSSerializer writer = impl.createLSSerializer();
        DOMConfiguration config = writer.getDomConfig();

        if (config.canSetParameter("format-pretty-print", Boolean.TRUE)) {
            config.setParameter("format-pretty-print", Boolean.TRUE);
        }

        // what a crappy way to force the stream to be UTF-8.  yuck!
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        LSOutput output = impl.createLSOutput();
        output.setEncoding("UTF-8");
        output.setByteStream(baos);

        writer.write(doc, output);

        out.write(baos.toString());
        out.flush();
    }
}