2014-01-15 1 views
0

У меня есть файл XML, который читает что-то вродеЧто может привести к сбою NSXML Parser?

<html> 
    <head style=""> 
    <style type="text/css"></style> 
    </head> 
    <body style="">current=yes<!--?xml version="1.0" encoding="ISO-8859-1"?--> 
    <results> 
     ... (Some tags and content) 
    </results> 
    </body> 
</html> 

Мой метод didStartElement не вызывался на всех. Это сбой из-за текста после тега body? Если да, есть ли способ изменить файл в приложении до того, как он получит NSXMLParser?

Анализатор инициализируется здесь:

NSURL *url  = [NSURL URLWithString:urlString]; 
NSData *data  = [[NSData alloc] initWithContentsOfURL:url]; 
parser   = [[NSXMLParser alloc] initWithData:data]; 
parser.delegate = self; 
[parser parse]; 

и

- (void) parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName 
namespaceURI:(NSString *)namespaceURI 
qualifiedName:(NSString *)qName 
attributes:(NSDictionary *)attributeDict 
{ 
    NSLog(@"Element: %@", elementName); 
    ... 
} 

Нет элемента имена выводятся.

+0

Покажите нам, как вы его создаете и используете. Убедитесь, что парсер инициализируется правильно. – Kevin

+0

@Kevin Добавлена ​​инициализация парсера. –

+0

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

ответ

0

Решение состоит в том, что есть текст, который пришел перед

<!--?xml version="1.0" encoding="ISO-8859-1"?--> 

тега.

На другой ноте, предшествующие метки (html, head и body) оказываются не быть частью файла, но добавили в браузере, чтобы отобразить файл. Точный вывод, что разбираемый может быть создан путем преобразования NSData в NSString переменные и его регистрации:

NSURL *url  = [NSURL URLWithString:urlString]; 
NSData *data  = [[NSData alloc] initWithContentsOfURL:url]; 
NSString *strData = [[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding]; 
NSLog(@"XMLData: %@", strData); 

Это выводимое что-то вроде

current=yes<!--?xml version="1.0" encoding="ISO-8859-1"?--> 
<results> 
    ... (Some tags and content) 
</results> 

и из этого вывода легко видеть что есть исходный текст, вызывающий ошибку.

 Смежные вопросы

  • Нет связанных вопросов^_^