Java HTML / XML How to - Remove standalone="yes" from jaxb generated xml








Question

We would like to know how to remove standalone="yes" from jaxb generated xml.

Answer

import java.io.ByteArrayOutputStream;
// www . j  a  v  a 2 s.  c o m
import javax.xml.bind.JAXBContext;
import javax.xml.bind.Marshaller;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.stream.XMLOutputFactory;
import javax.xml.stream.XMLStreamWriter;

@XmlRootElement
public class Main {

  private JAXBContext jaxbContext;
  private XMLOutputFactory xmlOutputFactory;

  public Main() throws Exception {
    jaxbContext = JAXBContext.newInstance(Main.class);
    xmlOutputFactory = XMLOutputFactory.newFactory();
  }

  public static void main(String[] args) throws Exception {
    System.out.println(new Main().getMessage());
  }

  public final String getMessage() throws Exception {

    Marshaller jaxbMarshaller = jaxbContext.createMarshaller();
    jaxbMarshaller.setProperty("jaxb.encoding", "ISO-8859-1");
    jaxbMarshaller.setProperty(Marshaller.JAXB_FRAGMENT, true);

    ByteArrayOutputStream baos = new ByteArrayOutputStream();
    XMLStreamWriter xmlStreamWriter = xmlOutputFactory.createXMLStreamWriter(
        baos, (String) jaxbMarshaller.getProperty(Marshaller.JAXB_ENCODING));
    xmlStreamWriter.writeStartDocument(
        (String) jaxbMarshaller.getProperty(Marshaller.JAXB_ENCODING), "1.0");
    jaxbMarshaller.marshal(this, xmlStreamWriter);
    xmlStreamWriter.writeEndDocument();
    xmlStreamWriter.close();
    return new String(baos.toByteArray());
  }
}