我想使用JAXB为以下XSD架构http://www.uniprot.org/support/docs/uniprot.xsd解析数据.
我的类是使用以下方法生成的:
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 jaxbElement=uniprotUnmarshaller.unmarshal(rx, Entry.class);
Entry entry= jaxbElement.getValue();
(...)
}
每个“条目”实例都保持为空.当一个条目被封送到stderr时,我得到类似的东西:
我认为这是因为xjc忽略了命名空间.它产生:
@XmlRootElement(name = "entry")
public class Entry {
代替 (?)
@XmlRootElement(name = "entry",namespace="http://uniprot.org/uniprot")
public class Entry {
我怎样才能解决这个问题 ?