[英]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.