comment marshaler un objet JAXB à org.w3c.dom.Document?

Cela me donne de l'objet Document avec un nœud de haut niveau avec pas de nœuds enfants:

public static Document getDocument(Object jaxb)
{
    DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
    //dbf.setNamespaceAware(true);
    Document doc = dbf.newDocumentBuilder().newDocument(); 

    JAXBContext context = JAXBContext.newInstance(jaxb.getClass());
    context.createMarshaller().marshal(jaxb, doc);

    return doc;
}

C'est la solution de contournement, ce qui semble encore plus inefficace, car il convertit en Chaîne, puis de Document.

public static Document getDocument(Object jaxb)
{                           
    StringWriter writer = new StringWriter();       
    JAXBContext context = JAXBContext.newInstance(jaxb.getClass());
    context.createMarshaller().marshal(jaxb, writer);

    return DocumentBuilderFactory.newInstance().newDocumentBuilder().
parse(new InputSource(new StringReader(writer.toString()));
}

Est-il possible d'accomplir ce que je suis en train d'accomplir?

source d'informationauteur J Smith