В настоящее время я сортировочная объект 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» с пространством имен, содержащихся в JAXB " obj "(или один из его атрибутов, в настоящее время они должны иметь один и тот же NS).
Любые идеи о том, как добраться до информации NS до маршалинга? В выходном потоке появляются пространства имен. Поэтому они находятся где-то в «obj».
[UPDATE] Как указано в ответах ниже, мне не нужно устанавливать свойство JAXB_FRAGMENT. Я изменил его на:
JAXB.marshal(new JAXBElement<T>(new QName("hard_coded_namespace", rootName), clazz, jaxbObject), out);
информация о пространстве имен была в 'package-info.java' – Chris
в зависимости от того, как вы хотите, чтобы ваше решение было универсальным, нет никакой гарантии, что пакет-информация. класс будет генерироваться xjc (см. параметр -npa). – kschneid