Как получить пространство имен объекта JAXB

В настоящее время я упорядочиваю объект 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);

Я хотел бы заменить «hard_coded_namespace» пространством имен, содержащимся в «obj» JAXB (или одним из его атрибуты, в настоящее время они должны использовать один и тот же NS).

Есть идеи, как получить информацию о NS ДО маршалинга? В выходном потоке появляются пространства имен. Значит они где-то в "obj".

[ОБНОВЛЕНИЕ] Как указано в ответах ниже, мне не нужно устанавливать свойство JAXB_FRAGMENT. Я изменил его на:

    JAXB.marshal(new JAXBElement<T>(new QName("hard_coded_namespace", rootName), clazz, jaxbObject), out);
6
задан Chris 11 June 2012 в 15:03
поделиться