NSXMLParser在遇到特殊字符后停止解析

Sam*_*m B 2 xml iphone xcode ios xcode4

我正在从google weather api读取XML文件并使用NSXMLParser解析它.有问题的城市是巴黎.这是我得到的简短的xml输出

           <?xml version="1.0"?>
    <xml_api_reply version="1">
    <weather module_id="0" tab_id="0" mobile_row="0" mobile_zipped="1" row="0" section="0" ><forecast_information>
    <city data="Paris, Île-de-France"/>
    <postal_code data="Paris"/>
    <latitude_e6 data=""/>
    <longitude_e6 data=""/> 
...
...
Run Code Online (Sandbox Code Playgroud)

现在我用来削减这个xml的代码是

NSString *address = @"http://www.google.com/ig/api?weather=Paris";
    NSURL *URL = [NSURL URLWithString:address];

NSXMLParser *parser = [[NSXMLParser alloc] initWithContentsOfURL:URL];
    [parser setDelegate:self];
    [parser parse];
...

- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qualifiedName attributes:(NSDictionary *)attributeDict 
{

    NSLog(@"XML Parser 1 ... elementName ... %@", elementName);

}
Run Code Online (Sandbox Code Playgroud)

这是我得到的上述xml的输出

XML Parser 1 ... elementName ... xml_api_reply
XML Parser 1 ... elementName ... weather
XML Parser 1 ... elementName ... forecast_information
Run Code Online (Sandbox Code Playgroud)

问题是,它解析所有标签,直到达到"城市数据",因为在巴黎,法兰西岛的名称中有一个非ascii字符然后它就停止了.之后它不像postal_code那样处理标签.纬度,经度等

所以我的问题是,有没有办法可以从返回的URL XML字符串中删除所有非ascii字符?

Fab*_*ann 8

我知道会发生什么,我只是遇到了同样的问题......

foundCharacters在你的解析器上查看你的方法......

我有这样的事情:

if (!currentElementValue) {
   currentElementValue = [[NSMutableString alloc] initWithString:string];
}
Run Code Online (Sandbox Code Playgroud)

currentElementValue当特殊的字符发生时,就停止了.

现在我的工作代码是:

if (!currentElementValue) {
    currentElementValue = [[NSMutableString alloc] initWithString:string];
} else {
    [currentElementValue appendString:string];
}
Run Code Online (Sandbox Code Playgroud)

记得设置currentElementValuenil你的最后didEndElement方法