2011-01-05 105 views

回答

4

您不需要使用@XmlRootElement批注。相反,你可以用你的根对象中的JAXBElement实例:

QName qName = new QName(null, "customer"); 
JAXBElement<Customer> jaxbElement = new JAXBElement<Customer>(qName, Customer.class, customer); 
marshaller.marshal(jaxbElement, System.out); 

有关更详细的例子中看到:

JAXB实现诸如EclipseLink MOXy(我是技术领先)也提供了替代的元数据表示,如XML。举个例子看看:

+1

谢谢布莱斯!但这个例子是一个编组案例,解组情况如何?我认为解组不适用JAXBElement作为参数,那么@XmlRootElement注释是不可或缺的吗? – Take 2011-01-06 00:57:37

+0

可以通过将类指定为某些解组方法的参数来指定希望解组的类型。这将返回包装在JAXBElement中的结果。 – 2011-01-06 01:03:38

+0

感谢您的快速回复,Blaise。我忽略了一些非编组方法......我再次尝试,它成功了!谢谢!我还有一个相关的问题。现在,无论何时访问服务器,都会创建JAXBContext和(Marshaller或Unmarshaller)实例,因为JAXBContext不会应用相同的参数,而会应用不同的类。演出有没有问题? – Take 2011-01-06 01:44:53

相关问题