无法理解JAXB解组行为

  • 本文关键字:JAXB java xml jaxb2
  • 更新时间 :
  • 英文 :


参考我以前的文章。我有以下代码,它正在从文件中读取XML。

logger.log(Level.INFO, "testSchemaChange");
JAXBContext jaxbContext = JAXBContext.newInstance("com.store.web.ws.v1.model");
Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();
JAXBElement<BookType> jeBookType = (JAXBElement<BookType>) unmarshaller.unmarshal(new File (BOOK_XML));
BookType bookType = jeBookType.getValue();
logger.log(Level.INFO, "Book recieved: " + bookType.getISBN());

我正在以Book而不是BookList作为根元素为XML种子。只要我在JAXBContext.newInstance中保留包的完整路径,这个例子就可以正常工作。

我刚换了

JAXBContext jaxbContext = JAXBContext.newInstance("com.store.web.ws.v1.model");

JAXBContext jaxbContext = JAXBContext.newInstance(BookType.class);

我开始获得异常SEVERE: unexpected element (uri:"", local:"book"). Expected elements are (none)

有人能解释为什么会有这种行为吗?

第S页:为了方便起见,我的测试类和JAXB生成的类在同一个包中,即com.store.web.ws.v1.model

您看到的问题是因为JAXBContext不知道您的ObjectFactory类包含book元素的@XmlElementDecl注释。

当您在包名称上创建JAXBContext时,它将自动拉入ObjectFactory类。如果在类上创建JAXContext,则需要显式包含带有@XmlRegistry注释的类(在本例中为ObjectFactory)。

相关内容

  • 没有找到相关文章