Обработка XML на iPhone: какой вариант лучше? - PullRequest
0 голосов
/ 05 апреля 2010

Я создаю новую версию приложения для iPhone, и мне интересно, стоит ли мне посмотреть, как мое приложение взаимодействует с сервером Мой iPhone-клиент отправляет и получает XML через HTTP-запросы.

Для отправки информации я использую фреймворк ASIHTTPRequest. Я "вручную" строю запрос XML, добавляя строки.

Для анализа ответа я использую NSXMLParser.

У меня вопрос, есть ли у меня лучшие варианты А) Создайте строку XML из объекта памяти. Б) Создайте объект памяти из строки XML.

Есть ли что-то вроде JAXB для маршалинга XML в объект?

Спасибо Gonso

Ответы [ 3 ]

2 голосов
/ 06 апреля 2010
1 голос
/ 06 апреля 2010

Синтаксический анализ XML

Я не могу придумать что-то, что ищет теги и разбирает вещи прямо на объекты (для XML), но стандартный построчный анализатор делает свою работу. Для использования NSXMLParser требуется много кода, поэтому для этого просто установите внешний класс. Это не займет много времени, и его легко отменить [parser abortParsing]

Я в основном использовал модель, в которой он запускает родительский элемент, получает данные от элементов детализации, а затем, когда родительский элемент закрывается, анализатор берет временные данные, заполняет их объектом и добавляет объект в объект. массив. Затем он повторяет процесс. Я не думаю, что мой путь был бы очень эффективным, если бы у вас было более 3-х уровней XML (корневые ==> родительские теги ==> подробные теги внутри родителей), но это работает для меня. Если у вас сложный XML, я бы нашел способ переключиться на JSON и использовать SBJSON, как предложил Matt.M. Создание XML

Если бы я создавал XML, я бы просто использовал набор for циклов и одну большую NSMutableString.

1 голос
/ 05 апреля 2010

Я не совсем уверен, будет ли это работать для вас, но вы можете попробовать использовать JSON вместе с анализатором JSON, таким как SBJSON, который создаст для вас объект в памяти на основе данных.

Чтобы получить JSON из XML-канала, я полагаю, что вы можете отправить запрос на XML в YQL (http://developer.yahoo.com/yql), который затем может преобразовать канал в JSON перед отправкой обратно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...