问题描述
我需要在 swift 5 中生成以下 XML,以便使用 Alamofire 发布它。我尝试使用 XMLMapper 执行此操作,但无法弄清楚如何处理此问题。谁能给点建议?
<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>
最好的问候,
帕特里克
解决方法
使用 XMLMapper,您可以生成此 XML。
尝试以下模型:
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
}
}
像这样生成您的 XML:
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")
或使用 Alamofire 发送(使用 Requests
子规范):
AF.request("<URL>",method: .post,parameters: service.toXML(),encoding: XMLEncoding.default)