Все решения здесь довольно уродливы и многословны. Просто установите строку внутри объекта Mashaller
, указав дополнительный заголовок.
Marshaller jaxbMarshaller = ...
jaxbMarshaller.setProperty("com.sun.xml.bind.xmlHeaders",
"<?xml-stylesheet type='text/xsl' href='nameoffile.xsl' ?>");
Этот пример выведет объект XML в файл с использованием таблицы стилей и отформатирует элементы, удобные для чтения людьми. Объект myXmlObject
относится к классу MyXmlClass
и будет записан в file
, отформатированный с помощью таблицы стилей, заданной 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);