Мне нужна помощь для отладки моего анализа XML, пожалуйста - PullRequest
0 голосов
/ 24 апреля 2010

Я анализирую эту строку:

<type>branch</type>

с этим кодом в didEndElement

if ([elementName isEqualToString:@"type"]) {

        [currentBranchDictionary setValue:currentText forKey:currentElementName];

    }

Когда я проверяю значение в ключе type, оно не содержит branch, а вместо этого содержит branch\n. Вот тест, который я выполняю:

    if ([[currentBranchDictionary valueForKey:@"type"] isEqualToString:@"branch"]) {
        NSLog(@"no new-line");
    } else if ([[currentBranchDictionary valueForKey:@"type"] isEqualToString:@"branch\n"]) {
        NSLog(@"new-line");
    }

это возвращает вывод "новой строки"

Вот метод foundCharacters:

- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string {
    [currentText appendString:string];
}

Я не понимаю, куда добавляется возврат каретки, кто-нибудь может помочь?

1 Ответ

1 голос
/ 24 апреля 2010

Я подозреваю, что ваш XML содержит возврат каретки ("\ r"), которые не отображаются вашим редактором.Спецификация XML требует, чтобы они были переведены в перевод строки ("\ n") перед тем, как сообщить результат вашему приложению:

http://www.w3.org/TR/REC-xml/#sec-line-ends

Можете ли вы проверить содержимое вашего файла XML?Что выводится из команды xxd?Вот вывод из файла, который я создал.Обратите внимание на дополнительный символ 0d:

0000000: 3c74 7970 653e 6272 616e 6368 0d3c 2f74  <type>branch.</t
0000010: 7970 653e                                ype>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...