2013-12-08 10 views
5

Il codice qui sotto sta stampando il seguente messaggio: Error Domain=NSXMLParserErrorDomain Code=111 "The operation couldn’t be completed. (NSXMLParserErrorDomain error 111.)NSXMLParserErrorDomain 111

mainUrl = [NSURL URLWithString:@"http://www.carris.pt/pt/carreiras"]; 
NSString *urlContents = [NSString stringWithContentsOfURL:mainUrl encoding:NSISOLatin1StringEncoding error:nil]; 
NSXMLParser *xmlParser = [[NSXMLParser alloc] initWithData:[urlContents dataUsingEncoding:NSISOLatin1StringEncoding]]; 
[xmlParser parse]; 
NSLog(@"%@", [xmlParser parserError]); 

Qualcuno ha un indizio? Come puoi vedere dal codice, l'html è con la codifica ISO-8859-1.

Aggiornamento: ho inviato l'URL al sito di convalida html: http://validator.w3.org/ e ha rilevato oltre 30 errori. Penso che abbia qualcosa a che fare con l'errore. Ma posso analizzare l'html bene con HPPLE.

+0

L'ho visto apparire mentre si analizza un tag CDATA con caratteri UTF-8 non validi. – qwertz

risposta

3

Sembra che nessuno abbia ancora imbattuto nella risposta corretta, quindi eccolo qui.

In NSXMLParserError docs, si dice:

I seguenti codici di errore sono definiti da NSXMLParser. Per i codici di errore non elencati qui, vedere il file di intestazione libxml/xmlerror.h> <.

Il numero 111 non è menzionato in questa lista, quindi andiamo a /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk/usr/include/libxml2/libxml/xmlerror.h, e trovare il valore:

XML_ERR_USER_STOP, /* 111 */ 

Non c'è un sacco di documentazione su XML_ERR_USER_STOP in libxml2, ma da reading the changeset, sembra che sia un errore rapido quando il parser vede un EOF imprevisto.

2

Se si guarda in NSXMLParser.h, vedrete l'elenco dei codici di errore:

NSXMLParserInternalError = 1, 
NSXMLParserOutOfMemoryError = 2, 
NSXMLParserDocumentStartError = 3, 
NSXMLParserEmptyDocumentError = 4, 
NSXMLParserPrematureDocumentEndError = 5, 
NSXMLParserInvalidHexCharacterRefError = 6, 
NSXMLParserInvalidDecimalCharacterRefError = 7, 
NSXMLParserInvalidCharacterRefError = 8, 
NSXMLParserInvalidCharacterError = 9, 
NSXMLParserCharacterRefAtEOFError = 10, 
NSXMLParserCharacterRefInPrologError = 11, 
NSXMLParserCharacterRefInEpilogError = 12, 
... 

in modo che appaia come se fosse un NSXMLParserCharacterRefInPrologError, che è definito nella sezione "Costanti" in the documentation. Dice:

NSXMLParserCharacterRefInPrologError Carattere non valido trovato nel prologo. Disponibile in iOS 2.0 e versioni successive. Dichiarato in NSXMLParser.h.

+0

Il codice 111 dovrebbe essere 11 allora? Ho notato che non c'è nessun elemento definito nella documentazione, il che mi suggerisce che potrebbe essere il caso. – thegrinner

+1

Questa è la mia ipotesi. O quello o è un errore interno che Apple non pubblica. – user1118321

+2

Questa non è la risposta corretta, 111 è più probabile che l'XML non sia ben formato. L'utilizzo di http://www.xmlvalidation.com/ mi ha aiutato a trovare il mio problema – CMash

0

Mi sono imbattuto in qualcosa di simile durante l'analisi di XML. Il problema potrebbe essere la codifica che stai utilizzando. Prova UTF8 il circuito di codifica invece di iOSLatin cioè

NSString *urlContents = [NSString stringWithContentsOfURL:mainUrl encoding:NSUTF8StringEncoding error:nil]; 
NSXMLParser *xmlParser = [[NSXMLParser alloc] initWithData:[urlContents dataUsingEncoding:NSUTF8StringEncoding]]; 
+0

. L'ho provato e ho ottenuto l'errore 'Dominio errore = NSCocoaErrorDomain Code = -1" L'operazione non può essere completata. (Errore di cacao -1.) " UserInfo = 0x8a50420 {NSXMLParserErrorMessage = Impossibile aprire il flusso di dati} '. – pedroremedios

4

Ho anche avuto la "111" (non documentato?) Il codice di errore durante l'analisi. Risulta che XML Parser si aspetta che l'XML sia ben formato (ad es. Un nodo radice che contiene tutti gli altri).

+0

+1, ho scoperto che non avevo tag di chiusura, quindi anche il mio XML non era ben formato. – Kaydell

+0

Ho usato http: //www.xmlvalidation.com/per trovare il mio problema, era sicuramente un dodgy XML che non era ben formato! – CMash

Problemi correlati