Какой самый простой способ заполнить атрибуты объекта из ответного сообщения XML? - PullRequest
1 голос
/ 31 января 2010

У меня достаточно опыта работы с iPhone SDK. У меня есть пара полностью разработанных приложений, включая служебное приложение для отслеживания данных и настольную игру. Я бы посчитал себя новичком в iPhone SDK. У меня также нет проблем с просмотром документации и примеров в течение нескольких часов, пока я что-то не пойму, если документация существует и имеет смысл.

Однако я не эксперт в XML-документах, разборе атрибутов и создании документов. В прошлом PHP-код я писал для доступа к веб-сервисам и выполнения транзакций с помощью сообщений SOAP XML. Мне нужно сделать подобное приложение, используя iPhone SDK. Вот что мне нужно.

1) Создание XML-сообщений для отправки в службу SOAP 2) Получать сообщения XML от службы SOAP 3) Разобрать ответные сообщения XML в пользовательский объект

Вся часть URL и SOAP относительно проста. Где я начинаю разочаровываться - это область создания и анализа сообщений XML. Используя PHP, эти задачи очень просты, так как в язык встроены клиенты SOAP, и вы можете легко классифицировать объекты сопоставления для обмена сообщениями SOAP, а тяжелая обработка XML просто выполняется автоматически. Я подумал о том, чтобы написать прокси-службу PHP и упростить то, что нужно на стороне iPhone, но это только усложняет то, что я хочу, и добавляет зависимость от другого приложения для работы вместе с веб-сервисом, к которому я обращаюсь.

Кажется, что в iPhone SDK или target-c в целом вы должны быть профессионалом в создании и разборе XML-сообщений самостоятельно. Я действительно обескуражен идеей создания тонны пользовательского кода для разбора каждого элемента сообщения за элементом. Я немного посмотрел на TouchXML / KissXML и не думаю, что это то, что мне нужно.

Настоящая ключевая цель здесь заключается в том, чтобы я хотел легко получить сообщение XML и кое-что, как получить элементы и их значения, скопированные в объект. Как это можно сделать, не тратя часов на написание классов анализа и понимая все, что нужно для создания XML-документов?

Ответы [ 2 ]

1 голос
/ 31 января 2010

Похоже, что вы действительно хотите это:

http://code.google.com/p/wsdl2objc/

Как он будет создавать объекты для вас из WSDL и предоставлять код поддержки для их отправки / получения.

Однако в основном происходит то, что люди не используют SOAP для мобильных веб-сервисов, а вместо этого переходят на RESTFUL.

Это включает в себя публикацию данных формы в HTTP-запросах POST или запросы через GET, а затем возвращение либо JSON, либо списков, которые превращаются в словари (JSON более широко понимается разработчиками серверов, НО вам нужно быть более осторожным, чтобы правильно определить структуры, являющиеся прошло, так как вы можете сделать что-то вроде словаря с повторяющимся тем же ключом ... списки более надежны в том смысле, что вы не можете создать что-то «неправильное», но менее стандартно на стороне сервера).

Если вам нужно использовать SOAP, WSDL2ObjC, вероятно, сэкономит вам много картографирования.

1 голос
/ 31 января 2010

Для большого успеха на iPhone я использовал XPathQuery Мэтта Галлахера. Все просто и понятно.

Однако я обнаружил, что сообщения, которые мне нужно проанализировать, значительно проще, чем то, на что способен XML (и даже его упрощенный синтаксический анализатор). Я изменил его источник, чтобы он возвращал структуру данных, с которой гораздо проще работать - вместо того, чтобы иметь ключи, набор ключей (nodeName, nodeContent, nodeAttributeArray, attributeName, ...) для каждого узла, я просто создаю вложенные массивы и словари с именем узла в качестве ключа и содержимым в качестве объекта напрямую. Я полностью игнорирую атрибуты и использую массивы, только если существует более одного узла с одинаковым именем. Вот этот код . Обратите внимание, что это было проверено только на XML, с которым я хочу работать. :)

Редактировать: упс, я только что понял, что вы также ищете для создания XML. Это просто делает разбор. Я оставлю это здесь как частичный ответ.

...