Java tutorial
//package com.java2s; /* * Copyright 2015, Supreme Court Republic of Slovenia * * Licensed under the EUPL, Version 1.1 or as soon they will be approved by the European * Commission - subsequent versions of the EUPL (the "Licence"); You may not use this work except in * compliance with the Licence. You may obtain a copy of the Licence at: * * https://joinup.ec.europa.eu/software/page/eupl * * Unless required by applicable law or agreed to in writing, software distributed under the Licence * is distributed on an "AS IS" basis, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express * or implied. See the Licence for the specific language governing permissions and limitations under * the Licence. */ import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.OutputStream; import java.io.Writer; import static java.lang.Boolean.TRUE; import javax.xml.bind.JAXBContext; import javax.xml.bind.JAXBException; import javax.xml.bind.Marshaller; import static javax.xml.bind.Marshaller.JAXB_FORMATTED_OUTPUT; import static javax.xml.bind.Marshaller.JAXB_FRAGMENT; import org.w3c.dom.Document; import org.w3c.dom.ls.DOMImplementationLS; import org.w3c.dom.ls.LSOutput; import org.w3c.dom.ls.LSSerializer; public class Main { /** * * @param obj * @return * @throws JAXBException */ public static byte[] serialize(Object obj) throws JAXBException { ByteArrayOutputStream bos = new ByteArrayOutputStream(); serialize(obj, bos); return bos.toByteArray(); } /** * * @param obj * @param os * @throws JAXBException */ public static void serialize(Object obj, OutputStream os) throws JAXBException { final Marshaller m = JAXBContext.newInstance(obj.getClass()).createMarshaller(); m.setProperty(JAXB_FRAGMENT, TRUE); m.marshal(obj, os); } /** * * @param obj * @param filename * @throws JAXBException * @throws FileNotFoundException */ public static void serialize(Object obj, String filename) throws JAXBException, FileNotFoundException { final Marshaller m = JAXBContext.newInstance(obj.getClass()).createMarshaller(); m.setProperty(JAXB_FRAGMENT, TRUE); m.setProperty(JAXB_FORMATTED_OUTPUT, TRUE); m.marshal(obj, new FileOutputStream(filename)); } /** * * @param obj * @param file * @throws JAXBException * @throws FileNotFoundException */ public static void serialize(Object obj, File file) throws JAXBException, FileNotFoundException { final Marshaller m = JAXBContext.newInstance(obj.getClass()).createMarshaller(); m.setProperty(JAXB_FRAGMENT, TRUE); m.setProperty(JAXB_FORMATTED_OUTPUT, TRUE); m.marshal(obj, new FileOutputStream(file)); } /** * * @param obj * @param w * @throws JAXBException * @throws FileNotFoundException */ public static void serialize(Object obj, Writer w) throws JAXBException, FileNotFoundException { final Marshaller m = JAXBContext.newInstance(obj.getClass()).createMarshaller(); m.setProperty(JAXB_FRAGMENT, TRUE); m.setProperty(JAXB_FORMATTED_OUTPUT, TRUE); m.marshal(obj, w); } public static boolean serialize(Document doc, boolean setXmlDecl, File f) throws FileNotFoundException { DOMImplementationLS lsImpl = (DOMImplementationLS) doc.getImplementation().getFeature("LS", "3.0"); LSSerializer serializer = lsImpl.createLSSerializer(); serializer.getDomConfig().setParameter("xml-declaration", setXmlDecl); // set it to false to get LSOutput output = lsImpl.createLSOutput(); output.setByteStream(new FileOutputStream(f)); return serializer.write(doc, output); } }