Iphone: SAX или DOM лучше для этой конкретной проблемы? - PullRequest
2 голосов
/ 20 июня 2011

Мой Iphone связывается с моим веб-сервисом SOAP.

У меня есть вопросник в моем XML, который включает вопросы, их ответы и выбор некоторой информации о пользовательском интерфейсе. И т. Д.Поэтому, когда пользователь вводит значение для набора вопросов с помощью IPhone и снова отправляет их обратно в веб-службу, служба добавляет новые неотвеченные вопросы к этому XML.

Таким образом, разговор с веб-службой начинается с пустого XML и создает до 200-300 КБ XML, когда пользователь отвечает на вопросы и получает новые.Поскольку это веб-служба без сохранения состояния, вся информация будет храниться в XML.

Практически, мне нужно только найти и проанализировать последние вопросы из XML-ответа, что должно быть хорошо для парсера SAX, и изменить только эту часть XML, добавив новый ответ и отправив обратно черезВеб-сервис модифицированный XML.НО пользователь также должен иметь возможность нажать «Назад».Так что это означает, что я должен держать этот XML в памяти (200-300 КБ) и анализировать при необходимости, когда пользователь нажимает назад и далее.

У меня вопрос, какой подход лучше:

1-Получите XML, полностью разберите его на объекты с помощью DOM, освободите XML из памяти и работайте только с объектами, когда пользователь нажимает назад и далее.Затем, когда дело доходит до отправки, соберите новое XML-сообщение с нуля с моими объектами.Также этот подход, по-видимому, сокращает время нажатия

2 - Используйте анализатор SAX и анализируйте только тогда, когда мне нужно, когда пользователь нажимает назад и далее.Но тогда я должен держать весь XML в памяти.Я не знаю, сможет ли Iphone справиться с этим, и последующие действия должны занять больше времени, так как я каждый раз разбираю.Но хорошая сторона в том, что мне не нужно заново собирать XML из объектов, когда я закончу.

Я думаю, что второй подход лучше, как вы думаете?А какой парсер хорош для этой работы?

Ответы [ 2 ]

1 голос
/ 21 июня 2011

Лично я предпочитаю парсеры XML DOM из-за их простоты использования и способности отделять логику анализа / создания от остальной части кода.Кажется, что ваше приложение лучше всего подходит для использования парсера DOM, потому что вы сами так сказали, что иногда вам нужны только определенные части XML, а не весь документ.SAX-парсеры не поддерживают произвольный доступ для чтения.

0 голосов
/ 20 июня 2011

прочитайте следующую статью, и вы найдете лучшее решение для вас http://www.raywenderlich.com/553/how-to-chose-the-best-xml-parser-for-your-iphone-project

Я бы все же пошел с NSXMLDocument.

...