I need generate the following XML in swift 5 in order to post it with Alamofire. I tried doing this with XMLMapper but could not figure out how to handle this. Could anyone give some advice?
<SERVICE name="dataservice/transaction.getView">
<PARAMETERS>
<PARAMETER name='columnList'>PERSON.FIRSTNAME,PERSON.PREFIX,PERSON.NAME,ACCESSKEY.RCN,READER.NAME</PARAMETER>
<PARAMETER name='filterTransTypeList'>1,2</PARAMETER>
<PARAMETER name='fromDate'>2021-01-17 00:00:00</PARAMETER>
</PARAMETERS>
</SERVICE>
best regards,
Patrick
Using XMLMapper, you can generate this XML.
Try the following model:
class Service: XMLMappable {
var nodeName: String! = "SERVICE"
var name: String?
var parameters: [Parameter]?
init(name: String?, parameters: [Parameter]?) {
self.name = name
self.parameters = parameters
}
required init?(map: XMLMap) {}
func mapping(map: XMLMap) {
name <- map.attributes["name"]
parameters <- map["PARAMETERS.PARAMETER"]
}
}
class Parameter: XMLMappable {
var nodeName: String!
var name: String?
var value: String?
init(name: String?, value: String?) {
self.name = name
self.value = value
}
required init?(map: XMLMap) {}
func mapping(map: XMLMap) {
name <- map.attributes["name"]
value <- map.innerText
}
}
Generate your XML like:
let service = Service(
name: "dataservice/transaction.getView",
parameters: [
Parameter(
name: "columnList",
value: "PERSON.FIRSTNAME,PERSON.PREFIX,PERSON.NAME,ACCESSKEY.RCN,READER.NAME"
),
Parameter(
name: "filterTransTypeList",
value: "1,2"
),
Parameter(
name: "fromDate",
value: "2021-01-17 00:00:00"
),
]
)
print(service.toXMLString() ?? "nil")
or send it with Alamofire (using Requests
subspec):
AF.request("<URL>", method: .post, parameters: service.toXML(), encoding: XMLEncoding.default)