Java:无法封送类型";实体.个人“;作为一个元素,因为
在我的webservice(使用RestEasy)项目中,我对jar有依赖关系。我从这个jar中使用了一个java类:Person 我的问题是,我需要将Person实例序列化为XML,但出现以下错误:Java:无法封送类型";实体.个人“;作为一个元素,因为,java,xml,jaxb,marshalling,Java,Xml,Jaxb,Marshalling,在我的webservice(使用RestEasy)项目中,我对jar有依赖关系。我从这个jar中使用了一个java类:Person 我的问题是,我需要将Person实例序列化为XML,但出现以下错误: unable to marshal type "entities.Person" as an element because it is missing an @XmlRootElement annotation 但是,我无法更改Person类以添加注释@XmlRootElement(它是第三方
unable to marshal type "entities.Person" as an element because it is missing an @XmlRootElement annotation
但是,我无法更改Person类以添加注释@XmlRootElement(它是第三方jar)
有没有其他方法(方法、库等)可以在不注释Person类的情况下将Person实例封送到XML中?
顺便说一句,这是我使用的代码,但由于缺少注释而失败:
String result;
Person person = personManager.findByPersonId(personId);
StringWriter sw = new StringWriter();
JAXBContext personContext = JAXBContext.newInstance(Person.class);
Marshaller personMarshaller = personContext.createMarshaller();
personMarshaller.marshal(person, sw);
result = sw.toString();
return Response.status(200).entity(result).build();
非常感谢。实现不需要向域模型添加任何注释。在缺少@XmlRootElement
(或@XmlElementDecl
)的情况下,只需将根对象包装到JAXBElement实例中即可
JAXBElement<Person> jaxbElement = new JAXBElement<Person>(new QName("person"), Person.class, person);
personMarshaller.marshal(jaxbElement, sw);
JAXBElement-JAXBElement=newjaxbelement(newqname(“person”)、person.class、person);
Marshaller.Marshaller(jaxbElement,西南部);
了解更多信息
注意:我是专家组的负责人和成员 如果您需要为模型提供元数据,但无法访问源,那么MOXy提供了一个外部元数据文档扩展,您可以用于此目的
谢谢你,你给我的链接是有用的,但我想知道这是否 EclipseLink库可以安全地集成到商业产品中 (许可证) MOXy自版本12.1.1以来一直是WebLogic中的默认JAXB实现,因此它绝对是企业级的