Я хочу проанализировать данные с помощью JAXB для следующей схемы XSD http://www.uniprot.org/support/docs/uniprot.xsd.XJC не генерирует @XmlElement с пространством имен?
Типичный XML для этого выглядит следующим образом: http://www.uniprot.org/uniprot/Q8NEJ9.xml
Мои классы были получены с использованием:
xjc http://www.uniprot.org/support/docs/uniprot.xsd
Я не могу получить JAXB unmarshaller для синтаксического анализа этих данных.
xmlInputFactory.setProperty(XMLInputFactory.IS_NAMESPACE_AWARE, Boolean.TRUE);
XMLEventReader rx=xmlInputFactory.createXMLEventReader(in);
final QName uEntry=new QName("http://uniprot.org/uniprot","entry");
while(rx.hasNext())
{
XMLEvent evt=rx.peek();
if(!(evt.isStartElement() && evt.asStartElement().getName().equals(uEntry)))
{
rx.next();
continue;
}
JAXBElement<Entry> jaxbElement=uniprotUnmarshaller.unmarshal(rx, Entry.class);
Entry entry= jaxbElement.getValue();
(...)
}
Каждый экземпляр «записи» остается пустым. Когда запись маршалируются STDERR, я получаю что-то вроде:
<ns2:entry xmlns:ns2="http://uniprot.org/uniprot" dataset="Swiss-Prot" created="2011-06-28+01:00" modified="2011-09-21+01:00" version="20"/>
Я думаю, это потому, что XJC игнорирует пространства имен. Он генерирует:
@XmlRootElement(name = "entry")
public class Entry {
вместо
@XmlRootElement(name = "entry",namespace="http://uniprot.org/uniprot")
public class Entry {
Как я могу это исправить (?)?
Спасибо Блейз, package-info.java пропускал ИНТ мой муравей путь. Я не думал, что этот файл будет скомпилирован. – Pierre
Привет, У меня очень похожая проблема. Что именно вам нужно было сделать, чтобы он работал? У меня есть сгенерированный класс 'package-info', но я не уверен, как его использовать. Должен ли я добавить его в мой процесс сборки maven? – L42