Быстрый разбор xml ответа 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>
Чтобы разобрать его, я пытаюсь использовать XMLMapper с https://github.com/gcharita/XMLMapper
парсинг конвертируется из этого ответа в объект
проблема в том, что ответ xml не имеет имени на узлах, как я могу правильно разобрать эту вещь? любая помощь будет оценена
1 ответ
Решение
Вы можете использовать вложенное отображение 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 init(XMLString:)
функция MethodResponse
класс как:
let methodResponse = MethodResponse(XMLString: xmlString)
Надеюсь это поможет.