Todas las soluciones aquí son bastante feo y detallado. Simplemente configure la línea dentro del objeto Mashaller
especificando el encabezado adicional.
Marshaller jaxbMarshaller = ...
jaxbMarshaller.setProperty("com.sun.xml.bind.xmlHeaders",
"<?xml-stylesheet type='text/xsl' href='nameoffile.xsl' ?>");
Este ejemplo generará un objeto XML en un archivo utilizando una hoja de estilo y formateará los elementos para que los humanos los lean. El objeto de la clase myXmlObject
es MyXmlClass
, y se escribirá en file
, formateado en una hoja de estilo dada por xslUrl
:
JAXBContext context = JAXBContext.newInstance(MyXmlClass.class);
Marshaller marshaller = context.createMarshaller();
//Need to use a Writer to marshal with the XSL
FileWriter fw = new FileWriter(file);
//Do this or else the XML is all one line and not human friendly...
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);
marshaller.setProperty("com.sun.xml.bind.xmlHeaders",
"<?xml-stylesheet type='text/xsl' href=\"" +
xslUrl +
"\" ?>");
marshaller.marshal(myXmlObject, fw);
Qué quiere decir que desea incluir una referencia de estilo en la salida JAXB? – skaffman