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: 512
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