Java - 如何在 @XmlType 中动态设置 propOrder 属性

Posted

技术标签:

【中文标题】Java - 如何在 @XmlType 中动态设置 propOrder 属性【英文标题】:Java - How to set propOrder attribute dynamically within @XmlType 【发布时间】: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>

有什么想法吗?

【问题讨论】:

【参考方案1】:

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

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

【讨论】:

以上是关于Java - 如何在 @XmlType 中动态设置 propOrder 属性的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 jdbc 和 java-swing 从特定列中检索完整的 xml(DataType as XMLTYPE)

在Java中,@XmlType 、@XmlRootElement、@XmlElement 这类写法是啥语法?

如何按属性从 XMLTYPE 字段中提取数据?

如何在 oracle XMLTYPE XMLTABLE 中支持 1 级路径目录

ORA-03001: 将 XMLTYPE 从表转换为 NCLOB 时未实现的功能

如何在 H2 数据库上管理 XmlType