NSXMLParser делит строку с символами Юникода - PullRequest
0 голосов
/ 11 ноября 2011

Я использую NSXMLParser для получения следующей строки (sqrt (2 x) ^ (7/6) × (7/6) / (4/9)) из следующего XML-кода:

 <pod title='Input'
     scanner='Identity'
     id='Input'
     position='100'
     error='false'
     numsubpods='1'>
  <subpod title=''>
   <plaintext>sqrt(2 x)^(7/6)×(7/6)/(4/9)</plaintext>
  </subpod>
 </pod>

Но выходная строка делится на две отдельные строки с помощью функции foundCharacters, которая возвращает следующий результат (используя NSLog):

2011-11-11 18: 29: 46.005 Wolfram API-test[35959: f803] sqrt (2 x) ^ (7/6) 2011-11-11 18: 29: 46.005 API-тест Wolfram [35959: f803] × (7/6) / (4/9)

Код для синтаксического анализа выглядит следующим образом:

-(void)parser:(NSXMLParser *) parser foundCharacters:(NSString *)string{
    if (elementFound) {
        [string canBeConvertedToEncoding:NSASCIIStringEncoding];
        NSLog(@"%@", string);
    }

}

Итак, мой вопрос: почему выходная строка разделяется на две отдельные строки?

1 Ответ

0 голосов
/ 11 ноября 2011

Я не уверен, почему это делится в этом случае, но в целом вы не должны ожидать, что все данные, полученные из -parser:foundCharacters:, будут возвращены сразу. Вместо этого вы должны накапливать символы, полученные из этого метода, в строку. Затем вы можете сделать что-нибудь, когда ваш делегат синтаксического анализатора получит уведомление о том, что конечный тег был получен в -parser:didEndElement:...

Символ Юникода может быть или не быть причиной того, что ваши данные были разделены, но то, были они или нет, не должно иметь значения для вашего кода.

...