我正在从谷歌天气api中读取XML文件并使用NSXMLParser解析它。有问题的城市是巴黎。下面是一个简单的XML输出我得到NSXMLParser在遇到特殊字符后停止解析
<?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
的问题在于它解析了所有标签,直到达到“城市数据”为止,因为在法国巴黎Île-de-France有一个非ascii字符,然后它就停止。它不像postal_code那样处理标签。纬度,经度等
所以我的问题是,有没有办法,我可以从返回的URL XML字符串中删除所有非ASCII字符?
结束设置
currentElementValue
到nil
,此对象不会对你做任何事情:'的NSString * XML = [NSString的stringWithContentsOfURL :URL编码:NSASCIIStringEncoding error:&error];'你根本没有使用它。 'NSXMLParser'直接从'URL'加载。 – 2012-08-06 16:54:52您是否收到解析或验证错误? – 2012-08-06 16:56:23
@Justin - 你正确的操纵XML字符串不会做任何事情,因为我将URL传递给XML解析器。有没有一种方法可以在 - (void)分析器中修改该xml的结果?若要:杰西 - 我没有得到任何错误,会发生什么是XML停止分析后,它击中第一个特殊字符。我有更多的标签,但没有阅读 – 2012-08-06 17:14:10