【问题标题】:Java - How to set propOrder attribute dynamically within @XmlTypeJava - 如何在 @XmlType 中动态设置 propOrder 属性
【发布时间】:2021-10-08 04:18:23
【问题描述】:

我有一个带有 xml 注释的类,它将被实例化然后用于生成一个 xml 文件。

@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "", propOrder = {
    "foo", "bar", "baz"
})
public class MyClass {

    @XmlElement(name = "foo", required = true)
    protected String foo;

    @XmlElement(name = "bar", required = true)
    protected String bar;

    @XmlElement(name = "baz", required = true)
    protected String baz;

    ...
}

我想使用这样的变量(例如version)动态设置属性propOrder

@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "", propOrder = version.equals("1") ? {"foo", "bar", "baz"} : {"bar", "baz", "foo"}
)
public class MyClass {

    @XmlElement(name = "foo", required = true)
    protected String foo;

    @XmlElement(name = "bar", required = true)
    protected String bar;

    @XmlElement(name = "baz", required = true)
    protected String baz;

    ...
}

所以基于这个version参数,生成的xml文件会是这样的

<foo></foo>
<bar></bar>
<baz></baz>

or 

<bar></bar>
<baz></baz>
<foo></foo>

有什么想法吗?

【问题讨论】:

    标签: java xml annotations jaxb


    【解决方案1】:

    这是不可能的。注解在编译时处理。

    PS:在纯java中是不可能的。如果你真的想要,你可以使用某种预处理器。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-09-21
      • 1970-01-01
      • 2020-12-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-06
      相关资源
      最近更新 更多