我需要获取托管在 Web 上的 XML 文件的内容并对其进行解析。
我决定使用 TouchXML 进行解析过程。但是,我无法获取文件的内容,因为它是用 ISO-8859-9 编码的
XML 文件网址: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)我还尝试将 xml 加载到 NSData 中。
NSError *error = nil;
NSData *XMLData = nil;
XMLData = [[NSData alloc]initWithContentsOfURL:[NSURL URLWithString:url] options:0 error:&error];
当我构造 XML Parser 时,特定字符是未知的,并且当我获得字符串值时应用程序终止。
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 终止应用程序。
我该如何解决这个问题?