java - 如何将数组索引添加到 JAXB 生成的 XML?

标签 java jaxb

我有一个Java bean ala

@XmlRootElement public class Bean {
    @XmlElementWrapper(name = "ints") @XmlElement(name = "int")
    int[] values;

    // constructors, getters, setters, etc...
}

JAXB 正在生成类似 XML

<bean>
    <ints>
        <int>12</int>
        <int>34</int>
        <int>56</int>
    </ints>
</bean>

我希望数组索引包含在 <int> 中标签作为数组位置传达了重要的值(value)。最好是像

这样的属性
<bean>
    <ints>
        <int id='0'>12</int>
        <int id='1'>34</int>
        <int id='2'>56</int>
    </ints>
</bean>

有办法吗?

最佳答案

XML 元素的顺序确实携带信息。元素序列具有明确的顺序,因此添加数组索引将是多余的,除非您计划跳过索引或让它们乱序。

由于这种推理,JAXB 无法自动执行您要求的操作。如果您仍想这样做,则需要将您的值包装在一个类中,该类将索引值合并为 @XmlAttribute 值:

@XmlRootElement 
public class Bean {
    @XmlElementWrapper(name = "ints")
    @XmlElement(name = "int")
    MyInt[] values;

    // constructors, getters, setters, etc...
}

public class MyInt {
   @XmlAttribute(name="id")
   int id;

   @XmlValue
   int value;
}

您需要确保正确填充 id 字段。

关于java - 如何将数组索引添加到 JAXB 生成的 XML?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3066020/

相关文章:

Java无法访问类,找不到类文件

java - 如何在 XSD 中指定属性 namespace 以便 JAXB 正确解释它?

java - 如何使用java从二维数组中获取特定列

java - 相当于在 Java 中扩展一个 final 类

java - GridView 我必须显示 3X3 矩阵如何做到这一点

c# - 处理将相似实体分组在一起的设计模式

java - 将 Spring Boot JMS 应用程序配置为默认使用 JAXB 编码的最简单方法是什么?

java - 您可以从 JAX-WS @WebMethod 返回一个数组吗?

eclipse - 生命周期配置未涵盖插件执行

java - 如何在不先构建的情况下在 netbeans 中运行 Maven 项目/主类?