#xml #cocoa-touch #ios #parsing #restkit
#xml #cocoa-touch #iOS #синтаксический анализ #restkit
Вопрос:
Я изучаю RestKit. Я наткнулся на функцию elementToPropertyMapping, которую она предоставляет. Мне интересно, могу ли я использовать это сопоставление для XML-документов? или это только для JSON?
В руководстве я обнаружил, что они предоставляют канал JSON. Итак, я в замешательстве. Также существует ли какой-либо другой анализатор XML для IOS, который предоставляет эту функцию сопоставления. Спасибо
Ответ №1:
Найденный вами учебник устарел. elementToPropertyMappings больше не используется. Вместо наследования от RKObject или RKManagedObject вы используете обычные классы objective-c и сопоставляете им данные с помощью RKObjectMapping.
Вы можете найти новую документацию здесь.
Но да, вы можете использовать отображение объектов RestKit для XML-документов. Анализатор должен обнаружить mimetype и использовать анализатор xml вместо json; если это не так, вы можете явно указать ему использовать xml в соответствии со связанной документацией.
Комментарии:
1. Извините, он переместился. Обновлена ссылка.
2. Ссылка указывает на документ, в котором описано сопоставление объектов в формате JSON, а не в формате XML : (
3. Сопоставления определяются таким же образом. RestKit учитывает тот факт, что он получает XML, а не JSON внутренне.
Ответ №2:
На самом деле, руководство на GitHub устарело, но даже в новом нет ссылки на то, как эффективно запрашивать XML-файлы с помощью RestKit для выполнения правильного сопоставления, и это очень сбивает с толку новичков вроде меня.
В качестве краткой справки я попытаюсь показать вам, как это работает с XML:
Допустим, у вас есть ответ, подобный этому:
<?xml version="1.0" encoding="UTF-8"?>
<users type="array">
<user>
<id>1</id>
<name>Roberto</name>
<company>Apple</company>
</user>
<user>
<id>2</id>
<name>Carlos</name>
<company>Adobe</company>
</user>
</users>
Если вы хотите сопоставить пользователей класса a в вашем проекте Objective-C, вам придется обратить особое внимание на ключевой путь, в данном случае: «users» <- первый тег, и «user» <-второй тег, и «Class», который вы хотите сопоставить.
Для этого вы используете:
[[RKObjectManager sharedManager].mappingProvider setMapping:objectMapping forKeyPath:@"users.user"];
В остальном все в порядке, если вы используете первую часть руководства по этой ссылке (Отображение объектов на примере):
Ответ №3:
Это очень хорошее сравнение анализатора xml для iOS
Как правило, вы должны иметь возможность выполнять такого рода сопоставление с помощью RestKit. Это зависит от того, насколько сложным является ваш xml. Если он полагается на пространства имен и чужеродные технологии, RestKit может быть сложным.
Для обычного xml Restkit работает довольно нормально. Несколько руководств / примеров и, наконец, документы по API RestKit. Найдите RKXMLPARSERLIB XML.