NSXMLParser выбрасывает NSXMLParserErrorDomain # 64 в - PullRequest
1 голос
/ 18 июля 2011

NSXMLParserErrorDomain # 64 генерируется NSXMLParser, если он находит следующую строку:

<?xml version="1.0"?>

Не имеет значения, если я initWithContentsOfUrl или initWithData. XML поступает через систему Apache php5.3. Если эта строка опущена, документ анализируется без ошибок. У нас есть сервер, поэтому я могу отфильтровать эту строку, но я бы лучше исправил парсер.

Ответы [ 2 ]

3 голосов
/ 11 января 2012

Проблема возникает из-за того, что сервер PHP возвращает несколько ненужных и пустых мест перед заголовком <?XML. Вот простое решение, которое работает для меня, просто исправьте входящую строку перед анализом:

NSRange range = [theXML rangeOfString:@"<?xml"];
theXML = [[theXML substringFromIndex:NSMaxRange(range)-5] stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];
NSData *xmldata = [theXML dataUsingEncoding:NSUTF8StringEncoding allowLossyConversion:YES];
1 голос
/ 18 июля 2011

Вы уверены, что на линии нет какого-либо искажения, такого как знак порядка следования байтов или другие скрытые символы?Это единственное, о чем я мог подумать, что это вызвало бы ошибку в этой строке, если, конечно, это первая строка в документе?

Кроме того, добавление encoding="UTF-8" может помочь, но, опять же, это должно бытьв самой первой строке документа и следите за скрытыми символами, опечатками (nbsp-s вместо пробелов и т. д.) и т. д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...