Я написал блок для отображения XML в объекты, называемый XMLMapper. (используется тот же метод, что и у ObjectMapper)
Вы можете использовать подпрограмму Requests для создания запросов SOAP.
Сначала нужно создать свой собственный SOAPMessage
:
class HolidayServiceMessage: SOAPMessage {
var countryCode: String?
override func mapping(map: XMLMap) {
super.mapping(map: map)
countryCode <- map["m:countrycode"]
}
}
Затем создать SOAPEnvelope как:
let soapMessage = HolidayServiceMessage(soapAction: "GetHolidaysAvaible", nameSpace: "http://holidaywebservice.com/HolidayService_v2")
soapMessage.countryCode = "UnitedStates"
let soapEnvelope = SOAPEnvelope(soapMessage: soapMessage)
Finaly отправить запрос SOAP с помощью Alamofire:
Alamofire.request("http://holidaywebservice.com/HolidayService_v2/HolidayService2.asmx?wsdl", method: .post, parameters: soapEnvelope.toXML(), encoding: XMLEncoding.soap(withAction: "http://holidaywebservice.com/HolidayService_v2#GetHolidaysAvaible"))
можно сопоставить Ответ XML на быстрые объекты с использованием протокола XMLMappable
.
Парсеров, таких как https://github.com/cezheng/Fuzi, облегчит вам анализ XML-файлов с помощью селекторов XPath или CSS. Вы можете определить для него свой собственный сериализатор. Взгляните на https://github.com/tristanhimmelman/AlamofireObjectMapper, что является хорошим примером создания ваших собственных сериализаторов ответов Alamofire. – cezheng