Отображение свойств элементов в RestKit

#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"];
  

В остальном все в порядке, если вы используете первую часть руководства по этой ссылке (Отображение объектов на примере):

https://github.com/RestKit/RestKit/wiki/Object-mapping

Ответ №3:

Это очень хорошее сравнение анализатора xml для iOS

Как правило, вы должны иметь возможность выполнять такого рода сопоставление с помощью RestKit. Это зависит от того, насколько сложным является ваш xml. Если он полагается на пространства имен и чужеродные технологии, RestKit может быть сложным.

Для обычного xml Restkit работает довольно нормально. Несколько руководств / примеров и, наконец, документы по API RestKit. Найдите RKXMLPARSERLIB XML.