使用JAXB的嵌套元素,其中element同时包含属性和元素值

时间:2013-01-09 14:59:15

标签: java jaxb marshalling moxy

环境:带有EclipseLink MOXy的JAXB 2.1.2

要求:

我想在编组时得到这样的XML:

<?xml version="1.0" encoding="UTF-8"?>
<root id="id123">
   <email>test@gmail.com</email>
   <address type="short">...</address>
</root>

我用这两个类对此进行建模:

@XmlAccessorType(XmlAccessType.FIELD)
@XmlRootElement(name="root")
public class ClassA {

    @XmlAttribute(name="id")
    private String id = null;

    @XmlElement(name="address")
    private Address addr = new Address();

    // and some getters setters
}

@XmlAccessorType(XmlAccessType.FIELD)
public class Address {

    @XmlElement(name="address")
    private String address = null;

    @XmlAttribute(name="type")
    private String type = null;

}

我得到的是这里,地址嵌套两次:

<?xml version="1.0" encoding="UTF-8"?>
<root id="id123">
   <email>test@gmail.com</email>
   <address type="short">
      <address>...</address>
   </address>
</root>

如何删除一个层次结构?

1 个答案:

答案 0 :(得分:7)

您可以使用@XmlValue

进行以下操作
@XmlAccessorType(XmlAccessType.FIELD)
public class Address {

    @XmlValue
    private String address = null;

    @XmlAttribute(name="type")
    private String type = null;

}

了解更多信息