How to add DOCTYPE and xml processing instructions when marshalling with JAXB?

Posted by Juha Syrjälä on Stack Overflow See other posts from Stack Overflow or by Juha Syrjälä
Published on 2010-05-27T07:42:13Z Indexed on 2010/05/27 7:51 UTC
Read the original article Hit count: 464

Filed under:
|
|
|

I am marshalling (serializing) JAXB beans to output stream. How can I add DOCTYPE declaration and xml processing instructions to ouput?

I am doing currently marshalling like this:

JAXBContext jaxbContext = JAXBContext.newInstance("com.example.package");
Marshaller marshaller = jaxbContext.createMarshaller();
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);

SchemaFactory schemaFactory = SchemaFactory.newInstance("http://www.w3.org/2001/XMLSchema");
Schema schema = schemaFactory.newSchema(schemaSource);
marshaller.setSchema(schema);

marshaller.marshal(object, output);

I'd like have output that looks something like this:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE Something SYSTEM "some.dtd">
<?xml-stylesheet type="text/xsl" href="some.xsl"?>

JAXB bean are generated code so I don't want to change them.

There are some undocumented tricks to add the xml processing instructions and doctype. But what is the preferred or right way to do this?

© Stack Overflow or respective owner

Related posts about java

Related posts about Xml