NSXMLParserErrorDomainのエラーで二回目のXML解析ができない

XMLを解析できるアプリを作ろうとNSXMLParserを使ってますが
1度目のXML解析は無事に実行できるけど、2度目に実行すると
解析結果が表示されない。

どうやら、解析の途中でエラーが出ているようです。
NSXMLParserが解析の途中で終了してしまう場合のエラーを
確認するには以下のコードを追加するとエラーの詳細が
見れるようになります。

// エラー
- (void)parser:(NSXMLParser *)parser parseErrorOccurred:(NSError *)parseError {
	// エラーの内容を出力
	NSLog(@"Error: %i, Column: %i, Line: %i, Description: %@",
          [parseError code],
          [parser columnNumber],
          [parser lineNumber],
          [parseError description]);
}

【結果】
Error: 64, Column: 5939, Line: 1, Description: Error Domain=NSXMLParserErrorDomain Code=64
“The operation couldn’t be completed. (NSXMLParserErrorDomain error 64.)”

どうやら「NSXMLParserErrorDomain error 64.」ってことらしいです。
エラーの詳細はわかりましたが、どこを直せばよいのかぜんぜんわかりません。

う〜ん、どうしよっかな。

しばらくコードを見ながら悩みましたが
原因が分かりました。

ネットから取得したXMLデータをNSURLConnectionで取得して
「NSMutableData *totalData;」に追記する形で保持していたのですが
2回目のXMLデータを取得するときは「totalData」を初期化してませんでした。

1回目と同じように「totalData」を以下のコードで書いて
初期化したら動くようになりました。

totalData = [NSMutableData data]; //XMLを取得する前に2回目もデータを初期化

Xcodeでは「NSXMLParser」のエラーと表示されましたが
原因は「NSXMLParser」にデータを渡す前の「NSURLConnection」に
問題がありました。

なぜ、ここを直したら上手く動いたのかが
よくわかりませんが、動くようになったので良しとしましょう。
こういうエラーの原因がすぐにわかるようになりたいです。

コメントは受け付けていません。

このページの先頭へ