Кодировка IOS ISO-8859-9
Мне нужно получить содержимое XML-файла, размещенного в сети, и проанализировать его.
Я решил использовать TouchXML для процесса разбора. Однако я не могу получить содержимое файла, так как он закодирован в соответствии с ISO-8859-9
URL файла 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.)
Вместо того, чтобы использовать Encoding, я также попытался указать явное кодирование, от 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.
Как я могу решить проблему?
1 ответ
Из TouchXML CXMLDocument.m
файл, это то, что initWithData:
похоже
- (id)initWithData:(NSData *)inData options:(NSUInteger)inOptions error:(NSError **)outError
{
return [self initWithData:inData encoding:NSUTF8StringEncoding options:inOptions error:outError];
}
В этом файле вы можете попробовать заменить NSUTF8StringEncoding
с NSASCIIStringEncoding
или какую бы кодировку он не использовал. Это может исправить это.