簡體   English   中英

使用 Swift 5 生成 XML 到 Alamofire

[英]Generate XML with Swift 5 to 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。

嘗試以下 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
    }
}

生成您的 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)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM