为什么以及何时需要 JAXBElement 在 JAXB 中?
我只是在学习JAXB(Java Architecture for XML Binding)。通过阅读一些资料,我脑海中出现了一个疑问。
甲骨文文档说:JAXBElement
When XML element information can not be inferred by the derived Java representation of the XML content, a JAXBElement object is provided. This object has methods for getting and setting the object name and object value.
链接这里
这是否意味着当模式定义的数据类型和 Java 数据类型之间没有直接映射时需要使用 JAXBElement
?
此外,在下面列出的代码示例之一中。我从这里跟随:
ObjectFactory factory = new ObjectFactory();
UserT user = factory.createUserT();
user.setUserName("Sanaulla");
ItemT item = factory.createItemT();
item.setItemName("Seagate External HDD");
item.setPurchasedOn("August 24, 2010");
item.setAmount(new BigDecimal("6776.5"));
ItemListT itemList = factory.createItemListT();
itemList.getItem().add(item);
ExpenseT expense = factory.createExpenseT();// we get expense object here
expense.setUser(user);
expense.setItems(itemList);
JAXBContext context = JAXBContext.newInstance("generated");
JAXBElement<ExpenseT> element = factory.createExpenseReport(expense);//why is this required
Marshaller marshaller = context.createMarshaller();
marshaller.setProperty("jaxb.formatted.output",Boolean.TRUE);
marshaller.marshal(element,System.out);
使用我们能够获得对象。
同样在代码中,如果我们看到,我们根据这个源创建
哪个是对象的包装器。
另一方面,我们不会为使用
检索的对象创建包装器,所以我的问题是:ExpenseT expense = factory.createExpenseT();
ExpenseT
JAXBElement<ExpenseT> element = factory.createExpenseReport(expense);
expense
UserT user = factory.createUserT();
- 包装纸需要什么?
JAXBElement
expense
- 何时使用?
JAXBElement