我一直在尝试使用JAXB来继续进行继承。对于我的生活,我似乎无法封送来自Employee
对象的XML字符串。我期待XML有点像这样:
<Employee>
<Name>Max</Name>
<ID>1199-4973-5323</ID>
</Employee>
我使用的类定义如下:
Person.groovy
@XmlRootElement(name = 'Person')
class Person {
@XmlElement(name = 'Name')
String name
}
Employee.groovy
@XmlRootElement(name = 'Employee')
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = '', propOrder = ['name', 'id'])
class Employee extends Person {
@XmlElement(name = 'ID')
String id
}
这会引发错误:
Employee
的propOrder,是Property name appears in
@XmlType.propOrder, but no such property exists
,这是非常明显的。有没有办法指定订单,包括来自父类的字段?groovy.lang.MetaClass is an interface, and JAXB can't handle interfaces
Class has two properties of the same name "name"
这是我用于编组的代码片段:
static String createXML(Object o) {
JAXBContext context = JAXBContext.newInstance(o.getClass())
Marshaller marshaller = context.createMarshaller()
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true)
StringWriter writer = new StringWriter()
marshaller.marshal(o, writer)
writer.toString()
}
另一方面,我没有测试过这段代码。我在这里有一个更大的项目,我这样做是为了更简单地解释我的情况。但是从this例子来看,应该没事,对吧?
答案 0 :(得分:0)
我想删除这篇文章,但后来我觉得有人可能和我有同样的问题。
我能够通过在父类中添加@XmlTransient
注释来解决此问题。