Ama*_*ora 13 java xml oracle xsd jaxb
我刚刚学习JAXB(用于XML绑定的Java体系结构).通过一些消息来源,我想到了一个疑问JAXBElement.
Oracle文档说:
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. 链接在这里
这是否意味着JAXBElement在Schema定义的数据类型和Java数据类型之间没有直接映射时需要使用?
此外,在下面列出的一个代码示例中.我从这里跟随:
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);
Run Code Online (Sandbox Code Playgroud)
使用ExpenseT expense = factory.createExpenseT();我们能够获得ExpenseT对象.
如果我们看到,在代码中再次创建JAXBElement<ExpenseT> element = factory.createExpenseReport(expense);
,根据此源创建的是expense对象的包装器.
另一方面,我们不为使用检索的对象创建包装器UserT user = factory.createUserT();
所以我的问题是:
JAXBElement包装的需求是expense什么?JAXBElement?有一些用例JAXBElement需要a:
nillable="true"和minOccurs="0".在这种情况下null,映射的字段/属性是什么意思?当属性为JAXBElement空值表示该元素不存在,而JAXBElement包装null表示带有的XML元素xsi:nil="true".foo或多种bar元素,它们是相同的类型.这里a JAXBElement是必需的,因为仅仅遇到一个String值不足以指示应该编组哪个元素.xsi:nil在包含属性的文档中遇到元素.在此示例中,对应于该元素的对象仍然可以被解组以保存属性值,但JAXBElement可以指示该元素为null.| 归档时间: |
|
| 查看次数: |
13138 次 |
| 最近记录: |