Java 如何将XML解组到此类?
我想使用JAXB解组器将XML解组到这种类型的对象Java 如何将XML解组到此类?,java,xml,jaxb,Java,Xml,Jaxb,我想使用JAXB解组器将XML解组到这种类型的对象 public class Pair<T1,T2> implements Serializable { private T1 first; private T2 second; public Pair(T1 first, T2 second) { this.first = first; this.second = second; } public T1 ge
public class Pair<T1,T2> implements Serializable {
private T1 first;
private T2 second;
public Pair(T1 first, T2 second) {
this.first = first;
this.second = second;
}
public T1 getFirst() {
return first;
}
public void setFirst(T1 first) {
this.first = first;
}
public T2 getSecond() {
return second;
}
public void setSecond(T2 second) {
this.second = second;
}
}
public class TripPair<T1,T2> extends Pair<T1,T2> {
public TripPair(T1 first, T2 second) {
super(first, second);
}
}
public class Fare extends Pricing implements Comparable<Fare> {
private List<TripPair<Integer,Integer>> trips = new LinkedList<>();
}
您需要为
对
类添加一个零参数构造函数,或创建一个XmlAdapter
,以使其正确解组(请参阅:)
更新
我正在使用JAXB marshaller进行调试 非封送元素,其类型错误。ElementsImpl而不是 整数 就JAXB而言,
第一个
和第二个
将被视为类型对象
,因为它在类级别对
而不是类型级别对
派生元数据。因此,XML需要使用必要的类型信息限定XML元素。这是使用xsi:type
属性完成的
public class Pair<T1,T2> implements Serializable {
private T1 first;
private T2 second;
公共类对实现可序列化{
私人T1优先;
私人T2秒;
尝试用所需的数据填充对象模型,然后对其进行编组,您将看到解组操作的XML应该是什么样子。我尝试使用
XmlAdapter
,但它仍然无法正常工作:(@misco-当您填充对象模型并封送它时,生成的XML是什么样子的?您的XmlAdapter
也是什么样子的。我正在使用JAXB封送器,当我调试未封送的元素时,它的类型是错误的。ElementNSImpl而不是Integer。@misco:您至少应该对这个答案投赞成票e在你的行为上花费的精力。如果它回答了你的问题(很可能会),你应该接受它。请查看@misco:请查看解释所有问题的链接。祝你的项目好运!
public class PairAdapter extends XmlAdapter<String, Integer> {
public String marshal(Integer val) throws Exception {
return val.toString();
}
public Integer unmarshal(String val) throws Exception {
return Integer.valueOf(val);
}
}
public class Pair<T1,T2> implements Serializable {
@XmlJavaTypeAdapter(PairAdapter.class)
private T1 first;
@XmlJavaTypeAdapter(PairAdapter.class)
private T2 second;
}
public class Pair<T1,T2> implements Serializable {
private T1 first;
private T2 second;