Как я могу отменить маркировку значений XML-схемы в Apex?
Я использую веб-сервис SOAP от Apex, который не поддерживает стек SOAP salesforce, поэтому я рассматриваю его как XML через HTTP.
У меня есть значения XML-схемы, такие как dateTime 2008-03-30T00:00:00-05:00
, которые мне нужно разобрать в Apex. Есть ли встроенная поддержка или библиотека, которая может это сделать?
1 ответ:
Для этого нет простого решения, как вы, вероятно, сразу же попытались,
Datetime.valueOf()
здесь мало помогает, вам придется рассечь строку и составить базовое Datetime, используя 6-paramsnewInstanceGmt
статический метод, а затем вызватьaddHours
/addMinutes
чтобы компенсировать часовой пояс.Даже если мы пренебрегаем губернатором (и я подозреваю, что вы легко столкнетесь с ним, если у вас есть большой набор с большим количеством дат), другие примитивные типы также потребуют специальной обработки, тогда у вас будет набор предопределенных производных типы, и в довершение всего пользовательские производные типы с фасетами. А затем смешать все это вместе, чтобы получить сложные типы. И когда вы все это сделаете, у вас будет собственный стек мыла в Apex:) как я могу убедить вас не делать этого:)
У меня были похожие проблемы, но я даже не хотел рассматривать идею создания пользовательского стека SOAP (у меня уже были огромные проблемы с библиотекой JSON и ограничителем губернатора). Решение, которое я использовал, заключается в установке ASMX "прокси" на сервер компании близко к источнику (хотя это не обязательно MS tech, вы также можете построить тот же прокси с, скажем, Axis), который будет потреблять WSDL в полной силе и переупаковывать операции в детское питание, которое salesforce SOAP может переварить. Даже с отставанием от других веб-сервисов это все равно было лучше, чем ничего.