首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >编组SubClass对象-同名属性

编组SubClass对象-同名属性
EN

Stack Overflow用户
提问于 2016-01-22 12:29:17
回答 1查看 134关注 0票数 0

我一直试图与JAXB一起解决继承问题。在我的生活中,我似乎无法从Employee对象封送XML字符串。我希望有一个类似于这样的XML:

代码语言:javascript
复制
<Employee>
    <Name>Max</Name>
    <ID>1199-4973-5323</ID>
</Employee>

我使用的类定义如下:

Person.groovy

代码语言:javascript
复制
@XmlRootElement(name = 'Person')
class Person {
    @XmlElement(name = 'Name')
    String name
}

Employee.groovy

代码语言:javascript
复制
@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"

下面是我用于混搭的代码片段:

代码语言:javascript
复制
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()
}

另外,我还没有测试过这段代码。我在这里有一个更大的项目,我这样做是为了更简单地解释我的情况。但是从的例子来看,它应该是好的,对吗?

EN

回答 1

Stack Overflow用户

发布于 2016-01-22 12:45:45

我想删除这篇文章,但我想可能有人和我有同样的问题。

我能够通过在父类中放置一个@XmlTransient注释来解决这个问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34946774

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档