当前位置: 代码迷 >> java >> JAX-B反序列化自定义标签
  详细解决方案

JAX-B反序列化自定义标签

热度:114   发布时间:2023-07-31 11:56:05.0

给定这样的对象:

@XmlRootElement(name = "node")
public class Node {
    @XmlElement(name = "data")
    private String data;
}

我想以这种方式序列化它:

<node><data [string]/></node>

我怎样才能做到这一点 ?

我的字符串包含多个属性,例如x='1' y='2'

您不需要将Java字段data建模为String ,而是将其建模为它自己的类(我们将其称为Data )。

所以,代替

@XmlElement(name = "data")
private String data;

你需要

@XmlElement(name = "data")
private Data data;

然后,新的Data类将包含Java字段xy

public class Data {
    @XmlAttribute(name = "x")
    private int x;

    @XmlAttribute(name = "y")
    private int y;
}

请注意, xy需要使用而不是@XmlElement进行注释。

例如,这将产生XML

<node><data x="1" y="2"/></node>
  相关解决方案