我正在从谷歌天气 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=""/>
...
...
现在我用来解析这个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);
}
这是我为上述 xml 获得的输出
XML Parser 1 ... elementName ... xml_api_reply
XML Parser 1 ... elementName ... weather
XML Parser 1 ... elementName ... forecast_information
问题是它解析所有标签直到它到达“城市数据”,因为名称 Paris, Île-de-France 中有一个非 ascii 字符,然后它就停止了。之后它不会像 postal_code 那样处理标签。纬度、经度等
所以我的问题是,有没有办法可以从返回的 URL XML 字符串中删除所有非 ascii 字符?