クラスXMLReaderを使用して、URLからいくつかのXMLを解析しています。XMLが正常に解析されることもあれば、次のようになることもあります。
Error Domain = NSXMLParserErrorDomain Code = 4 "操作を完了できませんでした。(NSXMLParserErrorDomainエラー4)"
解析は通常、何かを変更した後、最初に実行したときに成功し、その後、何かを変更するまで失敗します。たとえば、以下のコードでは、[parser release]行をコメントアウトしようとしましたが、正常に解析されました。次に、もう一度実行して、エラーコード4に戻りました。
成功または失敗するたびに、同じ入力データをログに記録します。
ここで何が問題になっているのか考えてみてください。それが役立つ場合は、さらにコードを貼り付けることができますが、常に同じデータを受け取るため、エラーをNSXMLParser解析メソッド(以下のコードで呼び出されます)内にあるように分離しました。
ありがとう!
編集:エラーコード4が空のドキュメントエラーであることを知っています。しかし、NSDataが空ではないことはわかっています。だからここで何か他のことが起こっています
- (NSDictionary *)objectWithData:(NSData *)data
{
//data always makes it here, the same data gets logged regardless of parse success
//NSLog(@"%@",data);
// Clear out any old data
[dictionaryStack release];
[textInProgress release];
dictionaryStack = [[NSMutableArray alloc] init];
textInProgress = [[NSMutableString alloc] init];
// Initialize the stack with a fresh dictionary
[dictionaryStack addObject:[NSMutableDictionary dictionary]];
// Parse the XML
NSXMLParser *parser = [[NSXMLParser alloc] initWithData:data];
parser.delegate = self;
[parser setShouldResolveExternalEntities:NO];
BOOL success = [parser parse];
[parser release];
// Return the stack's root dictionary on success
if (success)
{
NSDictionary *resultDict = [dictionaryStack objectAtIndex:0];
return resultDict;
}
return nil;
}