2010-01-12 70 views
2

目前我使用Castor框架编组对象到XML文件时,它的工作巨星Castor和JAXB的Marshaller

Writer writer = new FileWriter("D:/out.xml"); 
Marshaller.marshal(test, writer); 

但现在我使用的javax.xml.bind中做同样的事情。

  Writer writer = new FileWriter("D:/out.xml"); 
     JAXBContext context = 
      JAXBContext.newInstance(test.getClass()); 
     Marshaller marshaller = context.createMarshaller(); 
     marshaller.marshal(test, writer); 

然后我打这个错误信息:

不能编组型“package1.Testing”为元素,因为它缺少一个@XmlRootElement注释]

回答

2

添加XmlRootElement注解,你赢了再也不会出错了。这应该添加到顶级或“根”类。

+0

感谢您的回答,您可以粗略地向我解释为什么使用脚轮是好的,但jaxb需要添加在XmlRootElement – user236501 2010-01-12 02:32:46

+0

它只是语义。 Castor和JAXB API不同,JAXB需要注释,而Castor不需要。 – 2010-01-12 02:38:30

+0

这是否意味着JAXB需要知道在我的测试文件中,我必须将@XmlRootElement放在哪个类中才能看到? – user236501 2010-01-12 02:41:03