如何使用JAXB向我的XML添加自定义“type”属性?

时间:2015-04-29 08:26:42

标签: java xml web-services jaxb

这是一个jaxb问题 一个豆类

  @XmlAccessorType(XmlAccessType.FIELD)
  @XmlType(name = "tableBean") 
  public class TableBean {
  @XmlAttribute
  private String type;

  @XmlElement(name = "created_at")
  private Date created_at;

  @XmlElement(name = "database_id")
  private int database_id;

  @XmlElement(name = "id")
  private int id;

我想要像这样的xml

<tables>
  <table>
     <created_at type="datetime">2013-08-28T21:14:35+09:00</created_at>
     <database_id type="integer">1</database_id>
     <id type="integer">1</id>
 <table>
<tables>

我试图创建一个像这样的课程

public class Type_Int {

private String type;
private int id;
@XmlAttribute
public String getType() {
    return type;
}
public void setType(String type) {
    this.type = type;
}
@XmlValue
public int getId() {
    return id;
}
public void setId(int id) {
    this.id = id;
}

在Type_Int.class中使用@ XmlAttribute我可以得到我想要的,但是我的项目有很多变量,我可以为每个人编写类,所以我可以在我的主bean.class中做一些事情,我可以轻松地做到/ p>

1 个答案:

答案 0 :(得分:1)

如果您想映射如下字段:

private int id;

对于以下XML元素:

<id type="integer">123</id>

然后你可以利用XmlAdapter。利用您问题中的Type_Int类,您可以使用以下声明创建一个类,然后实现所需的marshalunmarshal方法,以将Integer转换为/从{{ 1}}。

Type_Int

要利用此适配器,您需要将字段从基本类型public class IntAdapter extends XmlAdapter<Type_Int, Integer> { ... } 更改为对象类型int,并将其注释为:

Integer