2017-02-22 149 views
0

我想找出一個合適的庫,它將SOAP消息轉換爲Java對象。將SOAP消息轉換爲Java對象

我遇到過XStream和JaxB。這些庫在將xml轉換爲對象時需要類表示。

我們收到的SOAP消息是動態的,它們將根據調用的SOAP方法而改變。所以不可能爲SOAP消息創建一個類結構。至於每次迭代,我們都會得到不同的SOAP響應。

是否有任何java api可用於將傳入的SOAP xml轉換爲Java類,然後使用JaxB或XStream中的將xml轉換爲java對象?

是否有可能使用JaxB或XStream將xml轉換爲Java集合,如地圖或映射Map而沒有它的Class表示?

+0

嘗試的xerces.jar到prase XML和Java對象 –

回答

1

EclipseLink's Moxy提供動態JAXB OXM功能。

使用EclipseLink Dynamic MOXy,您可以從各種元數據源中引導JAXBContext,並使用現有的JAXB API編組和解組數據......而無需在類路徑中編譯Java類文件。這允許您根據需要更改元數據,而無需更新和重新編譯以前生成的Java源代碼。

FileInputStream xmlInputStream = new FileInputStream("src/example/dynamic/customer.xml"); 
Unmarshaller unmarshaller = jaxbContext.createUnmarshaller(); 
DynamicEntity customer = (DynamicEntity) unmarshaller.unmarshal(xmlInputStream); 

而不是使用實際的Java類(如Customer.class或Address.class)的,動態莫西使用一個簡單的get(propertyName的)/套(propertyName的,的PropertyValue)API來處理數據。 EclipseLink生成(在內存中)與每個DynamicEntity關聯的DynamicType。

System.out.println(customer.<String>get("name")); 

推薦閱讀:

https://wiki.eclipse.org/EclipseLink/Examples/MOXy/Dynamic/XmlToDynamicEntity https://docs.oracle.com/middleware/1212/toplink/TLJAX/dynamic_jaxb.htm#TLJAX442

+0

聽起來有點像,我用10+年前XmlBeans的 –