4
假設我有這些類:解析XML具體子類
public class Container {
private String name;
private int number;
private List<ParentClass> list;
}
public class ParentClass {
private String value;
}
如果我使用JAXB一個XML文件中讀取,我期望的XML是這樣的:
<container>
<name>Name</name>
<number>1</number>
<subclass>
<value>Val</value>
</subclass>
<subclass>
<value>Val2</value>
</subclass>
<subclass>
<value>Val3</value>
</subclass>
</container>
而且我裝點像這樣我的課:
@XmlRootElement(name = "container")
@XmlAccessorType(XmlAccessType.FIELD)
public class Container {
@XmlElement(name = "name")
private String name;
@XmlElement(name = "number")
private int number;
@XmlElement(name = "subclass", type = Subclass.class)
private List<ParentClass> list;
}
@XmlRootElement(name = "container")
@XmlAccessorType(XmlAccessType.FIELD)
public class ParentClass {
@XmlElement(name = "value")
private String value;
}
現在,假設ParentClass
實際上是一個abstrac t類或接口,我有兩個從它派生的子類;是這樣的:
public abstract ParentClass {
void doSomething();
}
public IntSubclass extends ParentClass {
private int value;
public void doSomething() { ... }
}
public StringSubclass extends ParentClass {
private String value;
public void doSomething() { ... }
}
如何使用JAXB和XML能夠解析list
屬性是StringSubclass
或IntSubclass
相應的清單?
也就是說,如果我要從XML中讀取StringSubclass
元素或IntSubclass
元素並且能夠識別它們是一種或另一種。類似這樣的:
<container>
<name>Name</name>
<number>1</number>
<stringSubclass>
<value>Val</value>
</stringSubclass>
<stringSubclass>
<value>Val2</value>
</stringSubclass>
<intSubclass>
<value>3</value>
</intSubclass>
</container>
有什麼辦法嗎?也許與另一個框架?
由於
標註'Container.list'與https://docs.oracle.com/javase/7/docs/api/javax/xml/bind/annotation/XmlElements.html –