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

时间:2019-02-14 13:31:45

标签: java xml jaxb

给出这样的对象:

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

我想通过以下方式序列化它:

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

我该怎么做?

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

1 个答案:

答案 0 :(得分:0)

您需要将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必须由@XmlAttribute而不是@XmlElement注释。

这将产生XML,例如

<node><data x="1" y="2"/></node>