我需要獲取Web上託管的XML文件的內容,並對其進行解析。IOS編碼ISO-8859-9
我決定使用TouchXML進行解析過程。然而,由於它與ISO-8859-9
XML文件的URL編碼的,我不能得到文件的內容:http://rss.haberler.com/mobil/sondakika2.asp?kategori=manset
我已經試過2個不同的技術途徑。
1)獲取URL的內容到的NSString:
NSString *url = @"http://rss.haberler.com/mobil/sondakika2.asp?kategori=manset";
NSError *error = nil;
NSStringEncoding encoding;
NSString *xmlString = [[NSString alloc] initWithContentsOfURL: [NSURL URLWithString:url] usedEncoding:&encoding error:&error];
的xmlString變成空的,錯誤的描述說:
The operation couldn’t be completed. (Cocoa error 261.)
相反usedEncoding的,我也嘗試過指定的編碼明確,從UTF- 8到NSISOLatin1StringEncoding和NSISOLatin2StringEncoding(不幸的是,我找不到NSISOLatin9StringEncoding)。
2)我也嘗試加載到NSData的XML。
NSError *error = nil;
NSData *XMLData = nil;
XMLData = [[NSData alloc]initWithContentsOfURL:[NSURL URLWithString:url] options:0 error:&error];
當我構建XML解析器時,特定字符是未知的,當我得到字符串值時應用程序終止。
CXMLDocument *doc = [[CXMLDocument alloc] initWithData:XMLData options:0 error:nil];
NSArray *nodes = [doc nodesForXPath:@"//item" error:nil];
for (CXMLElement *node in nodes) {
for(int counter = 0; counter < [xmlElement childCount]; counter++) {
CXMLNode * child = [xmlElement childAtIndex:counter];
NSString *childName = child.name;
NSString * childValue = [child stringValue];
}
}
獲取stringValue的子節點用SIGABRT終止應用程序。
我該如何解決這個問題?
嘗試使用'NSStringEncoding iso88599 = CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingISOLatin9);' – rmaddy 2013-05-05 21:15:40
創建合適的NSStringEncoding。然後用正確的字符替換不受支持的字符,但xml解析器仍然出錯。 – SadullahCeran 2013-05-05 21:24:35