2013-12-08 17 views
5

Đoạn code dưới đây được in thông báo sau: 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]); 

Bất kỳ ai có một đầu mối? Như bạn có thể thấy bằng mã, html là với mã hóa ISO-8859-1.

Cập nhật: Tôi đã gửi url tới trang web của trình xác thực html: http://validator.w3.org/ và tìm thấy hơn 30 lỗi. Tôi nghĩ rằng có một cái gì đó để làm với lỗi. Nhưng tôi có thể phân tích cú pháp html tốt với HPPLE.

+0

Tôi đã thấy nó bật lên trong khi phân tích cú pháp thẻ CDATA với các ký tự UTF-8 không hợp lệ. – qwertz

Trả lời

3

Dường như chưa có ai vấp phải câu trả lời chính xác, vì vậy ở đây.

Trong NSXMLParserError docs, nó nói:

Các mã lỗi sau được định nghĩa bởi NSXMLParser. Đối với các mã lỗi không được liệt kê ở đây, hãy xem tệp tiêu đề < libxml/xmlerror.h>.

Số 111 không được nhắc đến trong danh sách này, vì vậy chúng tôi đi đến /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk/usr/include/libxml2/libxml/xmlerror.h, và tìm giá trị:

XML_ERR_USER_STOP, /* 111 */ 

Không có rất nhiều tài liệu về XML_ERR_USER_STOP trong libxml2, nhưng từ reading the changeset, có vẻ như đó là lỗi nhanh khi trình phân tích cú pháp thấy EOF bất ngờ.

2

Nếu bạn nhìn vào NSXMLParser.h, bạn sẽ thấy danh sách các mã lỗi:

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

Vì vậy, có vẻ như nó là một NSXMLParserCharacterRefInPrologError, được định nghĩa trong "hằng" phần in the documentation. Nó nói:

NSXMLParserCharacterRefInPrologError Ký tự không hợp lệ được tìm thấy trong phần mở đầu. Có sẵn trong iOS 2.0 trở lên. Được khai báo trong NSXMLParser.h.

+0

Mã 111 có phải là 11 sau đó không? Tôi nhận thấy không có 111 được xác định trong tài liệu, điều này gợi ý cho tôi rằng có thể là trường hợp. – thegrinner

+1

Đó là dự đoán của tôi. Hoặc đó là một số lỗi nội bộ mà Apple không xuất bản. – user1118321

+2

Đây không phải là câu trả lời đúng, 111 có nhiều khả năng gây ra bởi XML không được định dạng tốt. Sử dụng http://www.xmlvalidation.com/ đã giúp tôi tìm ra sự cố của mình – CMash

0

Tôi đã chạy vào thứ gì đó tương tự khi phân tích cú pháp XML. Vấn đề có thể là mã hóa mà bạn đang sử dụng. Thử mã hóa UTF8 thay vì iOSLatin tức là

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

Tôi đã thử và tôi đã nhận được 'Miền lỗi = NSCocoaErrorDomain Code = -1" Thao tác không thể hoàn thành. (Lỗi Cocoa -1.) " UserInfo = 0x8a50420 {NSXMLParserErrorMessage = Không thể mở luồng dữ liệu} '. – pedroremedios

4

Tôi cũng có mã lỗi "111" (không có giấy tờ?) Khi phân tích cú pháp. Nó chỉ ra rằng XML Parser hy vọng XML sẽ được định dạng tốt (ví dụ, một nút gốc chứa tất cả các phần tử khác).

+0

+1, tôi thấy rằng tôi không có thẻ đóng, vì vậy XML của tôi cũng không được định dạng đúng. – Kaydell

+0

Tôi đã sử dụng http: //www.xmlvalidation.com/để tìm ra vấn đề của tôi, nó chắc chắn là một số XML tinh ranh không được hình thành tốt! – CMash

Các vấn đề liên quan