2011-11-30 87 views
1

我正在向webservice發送請求,並且正在以xml格式接收來自web服務的正確響應,正確的值填充在響應元素tage中。現在我嘗試解組,但響應對象正在填充null,而不是我在XML響應中看到的值。無法解組我的xml

任何明顯的事情來檢查? 這是我的代碼:

InputSource outputSource = getWebServiceHelper().send(source,messageIdentifier); 

JAXBElement<Envelope> responseEnv = (JAXBElement<Envelope>) getWebServiceHelper().unmarshal(new SAXSource(outputSource)); 
JAXBElement<ResponseObjectType> result = (JAXBElement<ResponseObjectType>)responseEnv.getValue().getBody().getAny().get(0); 

的那一刻第二行執行,響應屬性成爲空。儘管在xml標籤之間是正確的!

謝謝了。 Chaitanya

回答

1

我通過激烈的反覆試驗找到了解決方案。這是我如何完成的。

運行xjc創建4個類,即ObjectFactory.java,package-info.java,表示web服務請求的類和表示web服務響應的類。

我忽視了包括package-info.java與其他3類。這是jaxb無法解開repsone的原因。

如果我不包括ObjectFactory.java,我在服務器啓動時發現異常,在彈出的上下文文件中定義了org.springframework.oxm.jaxb.Jaxb2Marshaller bean,所以我知道我必須包含它。但不包括package-info.java失敗默默地造成挫折!

我已經在Stackoverflow和其他地方看過,對於unmarshal()方法來接受只有一個參數javax.xml.transform.Source和unmarshal我需要使用@XmlRootElement註釋,但似乎並不適用於我的情況。