目標:試圖通過參數c
傳遞任何類,所以任何類都可以直接使用編組。JAXB編組期間的類鑄造
錯誤:[com.sun.istack.internal.SAXException2:不能編組類型「的java.lang.Class」作爲元素,因爲它缺少一個@XmlRootElement註釋]
給出該錯誤在線指出用箭頭( - >)
評論:如果我嘗試在管線8 & 9用來自實際的類的表達來改變c
然後這個工作得很好。沒有這樣做有沒有辦法。我認爲類別鑄造是不行的。
public XmlMarshaller(Class c){
try {
JAXBContext jaxbContext = JAXBContext.newInstance(c);
Marshaller marshaller = jaxbContext.createMarshaller();
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
--> marshaller.marshal(c, new File("xmlDyna/asd.xml"));
--> marshaller.marshal(c, System.out);
} catch (JAXBException e) {
e.printStackTrace();
}
}
如果有人認爲錯誤與缺少的@XmlRootElement註釋一致,這是其他類。
@XmlRootElement(name = "Dynamic")
public class DynamicLoader {
@XmlElement(name = "name")
public String name = "asdasd";
public DynamicLoader(){
XmlMarshaller marshaller = new XmlMarshaller(this.getClass());
}
public String getName(){
return name;
}
爲什麼你想在你的xml中編組java.lang.Class? –
我沒有試圖編組lang.Class對象。我試圖通過(Class c)作爲參數傳遞另一個對象。問題在於符合( - >)而不是c,它必須是類的名稱。你覺得我應該怎麼做? – rjbaj