我正在從谷歌天氣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