NSXMLParser работает некорректно с такими символами, как «

У меня есть некоторые проблемы с разбором xml в моем приложении для iPhone. Вот некоторая часть кода xml, которую я хочу проанализировать стандартным парсером NSXMLParser.

<item>
<title>AMNews: Facebook & Twitter Updates Might Lead To Burglary, Oldham School Violates DPA, Amazon Cloud “Burstsâ€</title>
<link>http://www.itproportal.com/2011/04/22/amnews-facebook-twitter-updates-might-lead-to-burglary-oldham-school-violates-dpa-amazon-cloud-bursts/</link>
<description>People announcing their holiday plans on social networking platforms like Facebook and Twitter are putting themselves at risks from thieves and burglars. A new study ha</description>
<author>[email protected] (Ravi Mandalia)</author>
<pubDate>Fri, 22 Apr 2011 08:19:36 +0100</pubDate>
<guid>http://cdn.itproportal.com/photos/facebook-logo-4_thumb80x80.png</guid>
</item>

Как вы можете видеть в

<title>AMNews: Facebook & Twitter Updates Might Lead To Burglary, Oldham School Violates DPA, Amazon Cloud “Burstsâ€</title>

в теге заголовка появляются странные символы "" "". В функции

- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string;

Я пытаюсь получить заголовок и сохранить его, но мой парсер работает неправильно. Парсер принимает только текст после символа "" !!!

Что я могу сделать и может ли кто-нибудь сказать мне, что происходит с parse ? Большое спасибо !!!


person Viktor Apoyan    schedule 22.04.2011    source источник


Ответы (2)


Можете ли вы показать нам свою реализацию -parser:foundCharacters:? Как вы храните string?

Я также однажды использовал NSXMLParser со специальными символами в файле XML, и это работало без проблем.

person fabian789    schedule 22.04.2011

Вот реализация -parser:foundCharacters:

- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string {
    //in case of unusable tags
    if (currentArticle == nil) {
        return;
    }
    // Get Title.   
    if ([currentElement isEqualToString:@"title"]) {
        [self.currentArticle setTheTitle:string];
    // Get Description.
    } else if ([currentElement isEqualToString:@"description"]) {
        string = [string stringByReplacingOccurrencesOfString: @"\n" withString: @"" ];
        [self.currentArticle setTheSummary:string];

    } else if ([currentElement isEqualToString:@"link"]) {
        [self.currentArticle setTheMainLink:string];

    } else if([currentElement isEqualToString:@"guid"]){
        [self.currentArticle setTheImageLink:string];

    } else if ([currentElement isEqualToString:@"pubDate"]) {
        [self.currentArticle setThePubDate:string];

    } else if([currentElement isEqualToString:@"author"]){
        [self.currentArticle  setTheAuthor:string];
    }
}

Я заметил, что синтаксический анализатор получает заголовок два раза: первый раз от начала до "и второй раз от" до конца. Как и в моей ленте, есть два тега title.

person Viktor Apoyan    schedule 22.04.2011