ios - 使用 Swift 5 生成 XML 到 Alamofire
问题描述
我需要在 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)
推荐阅读
- blogger - 在博客中提取提要作者
- mysql - Laravel where 子句中等效使用 mysql datediff 函数
- unity3d - 从高度图到行进立方体
- python - Django 使用带有字典中多个值的 icontains 过滤器
- spring - 无法将 1985-04-12T23:20 转换为 java.util.Date
- java - Java 字符串连接错误“字符串索引超出范围:-1”
- android - 如何编辑我的图像 EXIF 数据以进行图像旋转
- android - 错误是“在创建 RealmConfiguration 之前调用 `Realm.init(Context)`”
- hdfs - flink 中的检查点
- asp.net-web-api - 附加 zip 文件在 WEB API 中不起作用,但通过 POSTMAN 起作用