ios - 快速解析 xml 响应 odoo

标签 ios swift xml xcode xmlmapper

我正在搜索一个框架来将 xml 解析为 swift 上的 swift 类

我有这样的 react

<?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)

希望这对您有所帮助。

关于ios - 快速解析 xml 响应 odoo,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54519855/

相关文章:

ios - 使用 Travis 进行 Swift CI 测试 - 测试运行器在开始测试执行之前退出

c# - 如何通过捏合来缩放游戏对象?

swift - 获取 SequenceType 的前 n 个元素的优雅方法

xml - 为什么 XML :Simple complain that "No element found"?

ios - Swift 使用 firebase 在聊天中显示最后发送的消息

ios - 为什么在 View Controller 被取消初始化并导致 SIGABRT 或 EXC_BAD_ACCESS 后观察者还活着?

ios - 如何快速将 View Controller 放入 ScrollView 中

swift - 将 2 个相似的计算属性转换为在 Swift 中使用 1 个可重用函数?

java - XML 架构 : Setting fixed value for an attribute defined in a base-type

java - 错误 404 : Eclipse Servlet Login Application