Modifier l'en-tête XML produit par le JAXB marshaller

Je suis actuellement en utilisant le code suivant pour ranger un objet dans une chaîne xml

    JAXBContext context;

    try {
        context = JAXBContext.newInstance(heartbeat.getClass());
        StringWriter writer = new StringWriter();
        Marshaller marshaller = context.createMarshaller();

        heartbeat.setHeader(header);
        heartbeat.setHeartbeatEvent(event);

        marshaller.marshal(heartbeat, writer);
        String stringXML = writer.toString();
        return stringXML;

    } catch (JAXBException e) {
        throw new RuntimeException("Problems generating XML in specified "
                + "encoding, underlying problem is " + e.getMessage(),
                e);
    }

Qui produit l'en-tête suivant

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>

Ma sortie désirée est la suivante

<?xml version=\"1.0\"?>

En ajoutant à cela le marshaller

marshaller.setProperty(Marshaller.JAXB_FRAGMENT, Boolean.FALSE);
marshaller.setProperty("com.sun.xml.bind.xmlHeaders", "<?xml version=\"1.0\"?>");

- Je recevoir

<?xml version="1.0" encoding="UTF-8" standalone="yes"?><?xml version="1.0"?>

et la modification de la JAXB_FRAGMENT TRUE à la propriété supprime l'en-tête entièrement. J'ai été à la suite de la JAXB - Supprimer " standalone="yes" " de XML généré fil de tenter de résoudre le problème mais je n'ai pas eu de chance jusqu'à présent. Quelqu'un peut-il me donner un aperçu sur la façon d'obtenir mon choix d'en-tête de la JAXB marshaller?

OriginalL'auteur JME | 2013-08-26