2010-02-02 5 views
0

в классе, который я пишу, мне, скорее всего, придется использовать NSXMLParser дважды, чтобы разобрать два разных xml, и мне интересно, какой подход мне следует использовать? - освободить синтаксический анализатор после того, как он закончил разбор URL и повторную инициализацию, когда нужно разобрать второй URL? - использовать другой класс в качестве делегата для разбора другого URL-адреса? - или что-то еще?Повторное использование NSXMLParser

благодаря питер

ответ

1

В моем собственном опыте, я часто приходилось разбирать несколько различных ответов REST XML и для каждого из них я наследовать базовый класс и создать один класс для каждого запроса/ответа/синтаксического анализа. ИМХО, хотя это не чистый код, я честно считаю невозможным написать чистый код при работе с парсером SAX-стиля.

Моим советом были бы отдельные вызовы и, возможно, отдельные классы, если вы не хотите, чтобы в вашем коде была куча if-else. Теперь, если XML очень похож, это может быть другая история ...

+0

так что это означает, что назначает новый делегат для второго парсера. справедливо. Спасибо за помощь! – dusker

0

Я написал класс, который реализует методы парсера, и вам просто нужно передать ему строку (ваш url). Он возвращается с массивом элементов. Он может быть вам полезен.

Вы можете скачать его здесь: http://www.kieranmcgrady.me/helper-classes-for-parsing-xml-files

0

В прошлом я часто сделал классы для разбора каждого типа ответа, который я ожидал увидеть, вы можете повторно использовать NSXMLParser, но я действительно не видел необходимость.

В зависимости от ваших требований вы можете просто прочитать ответы во вложенные NSDictionaries, а затем обратиться к элементам, которые вам нужны непосредственно из словарей.