나는 이런 식으로 뭔가 보이는 XML 파일을 구문 분석하는 NSXMLParser를 사용하는 것을 시도하고있다가 발생할 때 나는 다음과 같은 코드를 사용NSXMLParser 오류는 '특별한'문자
<?xml version="1.0" encoding="us-ascii"?>
<teams>
<team id = "A1">
<player1>John</player1>
<player2>José</player2>
</team>
...
</teams>
:
NSString *urlString = [NSString stringWithFormat:@"http://www....abc.php?category=%@&poule=%c", @"S", 'B']; // Obviously, this contains an actual web address
NSURL *url = [NSURL URLWithString:urlString];
NSData *xml = [[NSData alloc] initWithContentsOfURL:url]; // <==
NSXMLParser *xmlParserObject = [[NSXMLParser alloc]initWithData:xml];
[xmlParserObject setDelegate:self];
[xmlParserObject parse];
및 didStartElement, foundCharacters, didEndElement 및 parserErrorOccurred 대리자 함수를 구현했습니다.
é와 같은 '특수 문자'가 나오기 전까지는 모두 잘 돌아갑니다. 나는 다음에 '< =='로 표시된 부분 대체 그런
parser error: Error Domain=NSXMLParserErrorDomain Code=1544 "The operation couldn’t be completed. (NSXMLParserErrorDomain error 1544.)"
parser error: Error Domain=NSXMLParserErrorDomain Code=5 "The operation couldn’t be completed. (NSXMLParserErrorDomain error 5.)"
:
NSError *error;
NSData *xml = [NSString stringWithContentsOfURL:url encoding:NSUTF8StringEncoding error:&error];
if (xml == nil) {
NSLog(@"*** Fatal error: %@\nuserInfo:%@", error, [error userInfo]);
}
을 위의 한 외에 다음 오류가 발생했습니다 대리인 방법 parserErrorOccurred 다음과 같은 오류를보고합니다 :
*** Fatal error: Error Domain=NSCocoaErrorDomain Code=261 "The operation couldn’t be completed. (Cocoa error 261.)" UserInfo=0x8158d90 {NSURL=http://www....abc.php?category=S&poule=B, NSStringEncoding=4}
userInfo:{
NSStringEncoding = 4;
NSURL = "http://www....abc.php?category=S&poule=B";
}
I는 또한 NSISOLatin1StringEncoding, NSUTF16StringEncoding, NSASCII 같은 다른 인코더들 중 어느 NSUTF8StringEncoding로 교체하려고 StringEncoding, NSUnicodeStringEncoding 등이 있습니다. 이것은 다음과 같은 오류가 발생했습니다 :
-[__NSCFString bytes]: unrecognized selector sent to instance 0x6e4cbc0
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFString bytes]: unrecognized selector sent to instance 0x6e4cbc0'
*** First throw call stack:
(0x12d0022 0x1781cd6 0x12d1cbd 0x1236ed0 0x1236cb2 0xce5f51 0xb447 0xaa89 0x1f2e330 0x1f2f439 0x908b9b24 0x908bb6fe)
terminate called throwing an exception(lldb)
나는 XML의 내용을 통제 할 수 없지만, 실제로 잘못된 정보가 들어 있다면, 어쩌면 내가 웹 마스터에게 이야기 할 수 있습니다.
é 문자를 'e'또는 '?'로 표시해도 괜찮습니다. 그게 필요한 경우.
이 오류의 원인과 해결 방법에 대한 조언은 크게 감사하겠습니다.
Tx!
- GB