iphoneSDK и NSXMLParser проблема - PullRequest
1 голос
/ 18 октября 2010

Итак, у файла XML он отлично разбирается, пока я не получу элемент, внутри которого есть странный тег.XML-файл выглядит примерно так:

<xml>
   <badtag><![CDATA[ This is the text that i want ]]> </badtag>
</xml>

По какой-то причине, когда он соприкасается с тегом "that *", приложение выходит из строя.Следующее представление загружается, однако после этого оно не выполняет никаких надлежащих действий.В основном он загружает пустое табличное представление, потому что никогда не вызывает "cellForRowAtIndexPath" (или любые другие необходимые методы таблиц).

У меня нет абсолютно никаких объяснений этому.Если я удаляю этот тег, я могу заставить его отлично анализировать файл XML.

В любом случае я могу выполнить поиск по всему файлу XML и удалить все экземпляры "<[CDATA [" и "]]>"во время выполнения.

ОГРОМНОЕ РЕДАКТИРОВАНИЕ:

Я только сейчас замечаю, если я наберу

<!CDATA (любой текст здесь исчезает)]]>
Здесь он также блокирует весь текст.

Ответы [ 2 ]

0 голосов
/ 18 октября 2010
- (void)parser:(NSXMLParser *)parser foundCDATA:(NSData *)CDATABlock
{
    NSString *someString = [[NSString alloc] initWithData:CDATABlock encoding:NSUTF8StringEncoding];
}
0 голосов
/ 18 октября 2010

'<' '&' и '>' являются зарезервированными символами HTML, а также некоторыми другими символами. Их необходимо экранировать, чтобы он проходил правильно, иначе это вызовет ошибку. В допустимом XML эти символы уже должны быть экранированы, поэтому его следует исправить на стороне сервера.

Если вы используете NSXMLParser и пытаетесь запустить через него недопустимый ввод, например, то, что у вас есть выше, он выдаст ошибку и прекратит передачу содержимого XML.

Если у вас нет доступа к исходному XML, оставьте комментарий, и я посмотрю, смогу ли я найти способы, как люди его исправили.

...