Actualmente estoy Marshalling un objeto JAXB a un flujo de salida con el siguiente código¿Cómo conseguir el espacio de nombres de un objeto JAXB
marshaller.setProperty(Marshaller.JAXB_FRAGMENT, Boolean.TRUE);
ByteArrayOutputStream out = new ByteArrayOutputStream();
marshaller.marshal(new JAXBElement(new QName("hard_coded_namespace", clazz.getSimpleName()), clazz, obj), out);
quisiera sustituir "hard_coded_namespace" con el espacio de nombres que aparecen en la JAXB " obj "(o uno de sus atributos, actualmente deberían compartir el mismo NS).
¿Alguna idea de cómo obtener la información de NS ANTES de ordenar? En la secuencia de salida, aparecen los espacios de nombres. Entonces están en algún lugar del "obj".
[ACTUALIZACIÓN] Como se señala en las respuestas a continuación, no es necesario configurar la propiedad JAXB_FRAGMENT. Lo cambié a:
JAXB.marshal(new JAXBElement<T>(new QName("hard_coded_namespace", rootName), clazz, jaxbObject), out);
la información del espacio de nombre estaba en 'package-info.java' – Chris
, dependiendo de qué tan general sea su solución, no hay garantía de que la información del paquete. la clase será generada por xjc (ver la opción -npa). – kschneid