Кодировка 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 или какую бы кодировку он не использовал. Это может исправить это.

Другие вопросы по тегам