2015-10-06 3 views
1

Есть ли способ использовать JAXB для того, чтобы получить пространство имен программно из элемента, отличного от root?JAXB Получает пространство имен из элемента, отличного от root?

я могу использовать следующий на корневой элемент (где Detailedreport является корневой элемент объекта):

QName qname = jaxb.getJaxbContext().createJAXBIntrospector().getElementName(new Detailedreport()); 
    final String namespace = qname.getNamespaceURI(); 

Однако, если я попробовать использовать тип из того же пакета, но не корневого элемента, qname равно null.

Согласно javadocs for JAXBIntrospector:

Объект Параметр является элементом JAXB для следующих случаев:

Это является экземпляром javax.xml.bind.JAXBElement. Класс объекта аннотируется с помощью @XmlRootElement.

Учитывая, что мой элемент без полномочий root, очевидно, не имеет @XmlRootElement, есть ли способ получить для него пространство имен/имен?

В качестве альтернативы, есть ли способ определить программно, какой класс представляет корневой элемент в пакете (без необходимости сканировать все классы для аннотации)? Я вижу пространство имен в файле package-info.java, но не знаю, как это сделать.

ответ

4

Я оставил этот вопрос здесь, если кто-то другой столкнулся с тем же вопросом.

Пространство имен для пакета находится в файле package-info.java. Эта информация может быть получена непосредственно с использованием java-методов:

String namespace = XmlElementName.class.getPackage().getAnnotation(XmlSchema.class).namespace(); 
Смежные вопросы