使用JAXB动态地向XMLRootElement或XMLElement注释添加值

时间:2014-04-21 22:05:04

标签: java xml arraylist jaxb annotations

我目前正在制作以下XML输出:

<pizzas>
    <pizza>
        <id>ffab8c72-bace-4748-b010-a06d1b13ad84</id>
        <name>Erna</name>
        <description>Robust med kant</description>
        <price>69.0</price>
        <toppings></toppings>
    </pizza>
</pizzas>

我想在XML输出的元素中包含id数据。喜欢:

<pizzas>
    <pizza id="ffab8c72-bace-4748-b010-a06d1b13ad84">
        <name>Erna</name>
        <description>Robust med kant</description>
        <price>69.0</price>
        <toppings></toppings>
    </pizza>
</pizzas>

当前输出是通过编组包含披萨元素的ArrayList生成的。保存此列表的类注释如下:

@XmlRootElement(name = "pizzas")
@XmlAccessorType(XmlAccessType.FIELD) 

并且ArrayList本身注释为:@XmlElement(name =&#34; pizza&#34;)

- 所以ArrayList注释是我需要改变的注释。但是我在世界上如何做到这一点:-) - 我已经看过@XMLElementRef,想到了动态更新@XMLElement的方法,但据我所知,它的名字String需要是静态/常量。 @XMLWrapper也引起了我的注意......但是......但是......

此外,有关信息。每个披萨元素注释为:

@XmlRootElement(name = "pizza")
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(propOrder = { "id", "name", "description", "price", "toppings" })

我希望Stackoverflow上有人能够帮助我提供一些好的建议:-D

期待收到你的来信。

亲切的问候 / Lars Bingchong

1 个答案:

答案 0 :(得分:4)

您只需使用id注释@XmlAttribute媒体资源。