[英]jaxb unmarshaling a list of derived objects
我正在尝试解组从通用基类派生的对象列表。 它们的定义如下:
public abstract class Par {
@XmlTransient
public String name;
@XmlAttribute(name="name")
public String getName() {
return name;
}
public void setName(String n) {
name = n;
}
}
@XmlRootElement(name="int")
public class IntegerPar extends Par {
@XmlTransient
public int value;
@XmlAttribute(name="value")
public int getValue() {
return value;
}
public void setValue(int v) {
value = v;
}
}
@XmlRootElement(name="string")
public class StringPar extends Par { ... }
现在,如果我创建一个List并将其编组为xml,它会按预期工作,产生整齐的效果
<root>
<int name="x" value="1"/>
<string name="s" value="hello"/>
</root>
但是如果我想将相同的xml解组到此类中
@XmlRootElement(name="root")
public class ParamRequest {
@XmlAnyElement
public ArrayList<Par> params;
}
我得到以下内容(取自Eclipse调试)
myRequest.params [[int: null], [string: null]]
有什么帮助吗? 谢谢。
编辑:解封由泽西岛完成
@POST @Path("/params")
@Produces(MediaType.TEXT_PLAIN)
@Consumes(MediaType.APPLICATION_XML)
public String postParams(ParamRequest myRequest) {
myRequest...
...
}
使用@XmlSeeAlso可以在marshall / unmarshall期间让JAXB了解有关子类的信息。
@XmlSeeAlso({IntegerPar.class,StringPar.class})
public abstract class Par {
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.