NSXmlParser не работает в iphone SDK 3.0 - PullRequest
0 голосов
/ 12 ноября 2009

я заметил странную проблему в SDK 3.0. Когда я анализирую XML, все работает нормально в любом SDK 2.x, но SDK 3.0 не так.

Я не нашел никакой разницы в NSXMLParser, но любой 2.x SDK работает нормально, а 3.0 - нет. Если кто-нибудь встречал такую ​​проблему и скажите мне, как ее решить? -> rssParser - объект NSXmlParser.

В SDK 3.0

я вызываю этот метод. [RssParser parse];

тогда первый метод, который вызвал мой парсер, это

  • (void) парсер: (NSXMLParser *) парсер parseErrorOccurred: (NSError *) parseError

и после этого ничего не делает.

когда я выбираю SDK 2.2.1

тогда также он вызывает этот метод

  • (void) парсер: (NSXMLParser *) парсер parseErrorOccurred: (NSError *) parseError

, но синтаксический анализатор не прекращает его анализ, продолжая вызывать другие делегаты NSXmlParser.

Ошибка разбора одинакова в обоих

Ошибка 65, Описание: (ноль), строка: 1, столбец: 60

Это первая строка

! DOCTYPE html PUBLIC "- // W3C // DTD HTML 4.01 Transitional // EN" с <> на обоих концах

Ответы [ 4 ]

3 голосов
/ 12 ноября 2009

Итак, вы пытаетесь проанализировать HTML-файл с помощью NSXMLParser. NSXMLParser нужен правильный XML-файл, а HTML-файлы не являются допустимыми XML-файлами, они могут быть, но почти все нет. Например, тип документа не является допустимым XML. Вы используете не тот «инструмент» для этой работы.

Причина, по которой он не работает на 3.x, но работает на 2.x, мне неизвестна, похоже, что в конце концов изменилось поведение.

Я бы предложил использовать libxml2 для анализа HTML-файла, а не NSXMLParser. Libxml2 может использоваться для анализа HTML "реального мира".

Возможно, вы захотите взглянуть на эту тему StackOverflow:
разбор HTML на iPhone

1 голос
/ 27 ноября 2009

На самом деле проблема в том, что в 3.0 NSXmlparser более ограничен и не будет анализировать любой файл в 3.0, содержащий ошибки. Ответ, данный Yannick Compernol, верен. Для решения проблемы, которую я использовал, libxml2.Вы можете увидеть эту ссылку на получить код для разбора

http://cocoawithlove.com/2008/10/using-libxml2-for-parsing-and-xpath.html

0 голосов
/ 26 ноября 2009

Мой xml-файл содержит ошибку

после удаления проблема решена. Я не знаю, почему он работал нормально для NSXMLParser в OS 2.2.1. Может быть, игнорировать ошибку в файле XML.

0 голосов
/ 12 ноября 2009

Похоже, в вашем xml есть ошибка, что парсер 2.x мог пройти, но парсер 3.0 более строг и останавливается.

Можете ли вы опубликовать самый маленький xml-файл, который может вызвать эту ошибку?

Sam

...