Java marshaller。使用标记值作为属性值

时间:2014-04-25 10:36:47

标签: java xml marshalling

我有班级

class Header {

    @FCBTag(type="type1") --My custom annotation
    int a = "valueA";
    @FCBTag(type="type2")
    String b = 1;
    @FCBTag(type="type3")
    Boolean c = true;

}

我想把这个类编成像这样的XML

<Header>
    <a type="type1" value="valueA" />
    <b type="type2" value="1" />
    <c type="type2" value="true" />
</Header>

有可能吗?是否存在一些适配器?我怎么能这样做?

1 个答案:

答案 0 :(得分:0)

我在EclipseLink JAXB (MOXy's) @XmlPath扩展程序中实现了对此的支持。以下是如何在类上指定映射。

import javax.xml.bind.annotation.XmlType;
import org.eclipse.persistence.oxm.annotations.XmlPath;

@XmlAccessorType(XmlAccessType.FIELD)
class Header {

    @XmlPath("a[type='type1']/@value")
    int a = "valueA";

    @XmlPath("b[type='type2']/@value")
    String b = 1;

    @XmlPath("c[type='type3']/@value")
    Boolean c = true;

}

了解更多信息

我的博客上有这个功能的完整示例: