我遵循預定義的WSDL(和xsd)發送和重新調用Web服務調用。發送Web服務發送Any類型的對象。我可以發送它。當我收到回覆時,我們會得到任何元素的列表。下面是代碼,我們使用:解組肥皂類拋出異常
List<Object> list = academicRecordBatch.getBatchContent().getAny();
if (list != null && list.size() > 0) {
Log.debug("got : "+ list.get(0).getClass().getName());
K12StudentType k12StudentType = (K12StudentType) list.get(0); //error on this line
}
這將產生以下錯誤: 【JAVA] 2011-05-10 09:52:53707 DEBUG [com.mycompany.is.Test]主(線42):返回的對象:[email protected]3bead5 [java] java.lang.ClassCastException:com.sun.org.apache.xerces.internal.dom.ElementNSImpl無法轉換爲org.pesc.sector .academicrecord.v1_4.K12StudentType
看起來像返回的是ElementNSImpl的列表。我如何從中提取我的K12StudentType對象?
我將不勝感激任何建議。
JAXB已經爲您的'batchContent'屬性生成了一個全部getAny()'getter,因爲它可能包含任何元素。這就是爲什麼你需要在進行轉換之前明確檢查元素類型。提供解組之前得到的適當的XSD部分和XML:也許會有更多有用的評論/想法。 – 2011-11-21 17:10:26