nsxmlparser iphone, анализирующий RSS, вызывает проблемы с кодированием

Я работаю над простым RSS-ридером. Этот ридер загружает данные из Интернета через этот код:

NSXMLParser *rss = [[NSXMLParser alloc] initWithURL:[NSURL URLWithString:@"http://twitter.com/statuses/user_timeline/50405236.rss"]];

Моя проблема с кодировкой. Файл RSS 2.0 должен иметь кодировку UTF8 в соответствии с атрибутом кодировки в файле XML.

<?xml version="1.0" encoding="utf-8"?>

Поэтому, когда я загружаю содержимое URL-адресов, я получаю усечение текста после первого появления символа с диакритическими знаками, например: ľ š č ť ž ý á í é и т. Д.

Я попытался решить проблему, загрузив URL как строку UTF8, я использовал этот код:

NSString *rssXmlString = [NSString stringWithContentsOfURL: [NSURL URLWithString: @"http://www.macblog.sk/rss.xml"] encoding:NSUTF8StringEncoding error: nil]; 
NSData *rssXmlData = [rssXmlString dataUsingEncoding: NSUTF8StringEncoding];

Не помогло. Спасибо за ваши ответы.


person Peter Stajger    schedule 16.04.2010    source источник
comment
Так что я решил эту проблему сам. Итак, проблема была в этом методе parser: foundCharacters :, мне пришлось прочитать документацию более подробно: объект парсера может отправлять делегату несколько сообщений parser: foundCharacters: для сообщения символов элемента. Поскольку строка может быть только частью общего содержания символов для текущего элемента, вы должны добавлять ее к текущему накоплению символов до тех пор, пока элемент не изменится.   -  person Peter Stajger    schedule 16.04.2010


Ответы (1)


Ознакомьтесь с MWFeedParser на GitHub, это выпущенный мной анализатор каналов RSS / Atom с открытым исходным кодом, и он делает читать и анализировать веб-новости чрезвычайно легко.

Также есть простое демонстрационное приложение, которое показывает, насколько легко его реализовать.

Надеюсь, это может быть полезно!

person Michael Waterfall    schedule 21.07.2010
comment
Привет, Майкл, спасибо за хороший совет. Но теперь я использую фреймворк Three20 и встроенный парсер. - person Peter Stajger; 28.07.2010