2012-02-15 29 views
2

我正在使用Salesforce的SOAP堆棧不支持的來自Apex的SOAP Web服務,所以我將其視爲XML over HTTP。如何解開Apex中的XML Schema值?

我有XML Schema值,例如我需要解包到Apex中的dateTime 2008-03-30T00:00:00-05:00。是否有內置的支持,或可以做到這一點的圖書館?

+0

你是指解析日期時間的支持還是你的意思是整個enchilada(模式到類的gen,序列化和反序列化)? – mmix 2012-02-16 07:57:10

+0

我當前的擔憂是日期。但更廣泛的問題是關於任何原始XML模式類型:http://www.w3.org/TR/xmlschema-2/#built-in-primitive-datatypes – 2012-02-16 18:11:24

回答

1

目前對此沒有簡單的解決方案,因爲你可能嘗試過右走,Datetime.valueOf()幫助不大在這裏,你將不得不解剖字符串並使用6-PARAMS newInstanceGmt靜態方法撰寫基地日期時間,然後調用addHours/addMinutes來補償時區。

即使我們忽略了州長(我懷疑你會很容易遇到它,如果你有很多日期很大的集合),其他原始類型也需要特殊處理,那麼你將有一套預定義的派生類型,並將其包含所有具有構面的自定義派生類型。然後將它們混合在一起以獲得複雜的類型。當你完成所有這些工作時,你將在Apex中擁有一個自定義的SOAP堆棧:)我如何說服你不要這樣做:)

我有類似的問題,但我甚至不想招待構建定製SOAP堆棧的想法(我已經遇到了JSON library和限速器管理員的巨大問題)。我使用的解決方案是在靠近源的公司服務器上安裝一個ASMX「代理」(儘管它不一定是MS技術,您可以同樣構建一個與Axis相同的代理),它將全部使用WSDL強制重新包裝Salesforce SOAP可以消化的嬰兒食品。即使搭載另一個Web服務的時間滯後,它仍然比沒有好。