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

环境:带有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>

如何删除一个层次结构?

最佳答案
您可以使用@XmlValue执行以下操作:

@XmlAccessorType(XmlAccessType.FIELD)
public class Address {

    @XmlValue
    private String address = null;

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

}

欲获得更多信息

> http://blog.bdoughan.com/2011/06/jaxb-and-complex-types-with-simple.html

转载注明原文:java – 使用JAXB的嵌套元素,其中element同时包含属性和元素值 - 代码日志