繁体   English   中英

JAXB属性作为元素值

[英]JAXB Attribute as Element Value

我有定义为的XML

<ROOT>
    <CHILD1 VALUE=""/>
    <CHILD2 VALUE=""/>
</ROOT>

有什么方法可以提取VALUE属性作为元素的值,而不是将CHILD1视为具有VALUE属性的ComplexType,以便适合此pojo?

@XmlRootElement(name="ROOT")
public class Root {

    @XmlElement(name="CHILD1")
    private String child1;

    @XmlElement(name="CHILD2")
    private String child2;
}

好吧,JAXB中有一些裁切绑定功能: https ://docs.oracle.com/javase/tutorial/jaxb/intro/custom.html但这对于我认为不太重要的事情会相当复杂。

如果未生成Java Pojos,则可以简单地添加方法以直接访问子字段,例如Root.getChild1String(),它将调用Root.getChild1()。getValue()

或者,您可以更改xml模式。

我最终编写了一个适配器来转换该属性以进行反序列化。

@XmlElement(name = "CHILD1")
@XmlJavaTypeAdapter(ValueAdapter.class)
private String child1;

public class ValueAdapter extends XmlAdapter<Object, String> {
    private static String VALUE = "VALUE";
    @Override
    public String unmarshal(Object e) throws Exception {
        if (e instanceof ElementNSImpl && ((ElementNSImpl)e).hasAttribute(VALUE)) {
            return ((ElementNSImpl)e).getAttribute(VALUE);
        }
        return null;
    }

    @Override
    public Object marshal(String s) throws Exception {
        return null;
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM