簡體   English   中英

快速解析xml響應odoo

[英]swift parsing xml response odoo

我正在搜索一個框架來將xml解析為swift上的swift類

我有這樣的回應

<?xml version='1.0'?>
<methodResponse>
    <params>
        <param>
            <value>
                <array>
                    <data>
                        <value>
                            <struct>
                                <member>
                                    <name>id</name>
                                    <value>
                                        <int>23</int>
                                    </value>
                                </member>
                                <member>
                                    <name>name</name>
                                    <value>
                                        <string>20190111_Patient _Test 1_Frank</string>
                                    </value>
                                </member>
                                <member>
                                    <name>partner_id</name>
                                    <value>
                                        <boolean>0</boolean>
                                    </value>
                                </member>
                            </struct>
                        </value>
                    </data>
                </array>
            </value>
        </param>
    </params>
</methodResponse>

為了解析它,我試圖從https://github.com/gcharita/XMLMapper使用XMLMapper

解析從此響應轉換為對象

問題是xml的響應在節點上沒有名稱,我該如何正確解析這件事? 任何幫助,將不勝感激

您可以將XMLMapper嵌套映射與以下模型一起使用:

class MethodResponse: XMLMappable {
    var nodeName: String!

    var members: [Member]?

    required init?(map: XMLMap) {}

    func mapping(map: XMLMap) {
        members <- map["params.param.value.array.data.value.struct.member"]
    }
}

class Member: XMLMappable {
    var nodeName: String!

    var name: String?
    var value: Value?

    required init?(map: XMLMap) {}

    func mapping(map: XMLMap) {
        name <- map["name"]
        value <- map["value"]
    }
}

class Value: XMLMappable {
    var nodeName: String!

    var string: String?
    var int: Int?
    var boolean: Int?

    required init?(map: XMLMap) {}

    func mapping(map: XMLMap) {
        string <- map["string"]
        int <- map["int"]
        boolean <- map["boolean"]
    }
}

並映射您的XML調用MethodResponse類的init(XMLString:)函數,例如:

let methodResponse = MethodResponse(XMLString: xmlString)

希望這可以幫助。

暫無
暫無

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

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