NSXMLParserで文字が切れてしまう
kuniです。
「http://~~/128459253/roロゴ_normal.png」
と言うようなxmlに書かれたアドレスをNXXMLパーサーで取得しようと思い、
URLエンコードは、
http://akisute.com/2008/12/cocoaiphoneurl.html
に書いていただいている物などを使えばいいのかと思いきや、
そもそも、
- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string
のStringに入ってくる時点で、なぜか
「http://~~/128459253/ro」
という文字列になってしまっていました。
http://journal.mycom.co.jp/column/iphone/007/index.html
を見ると、NSXMLParserの方が高速みたいですし、
こちらを使ってみようかと思います。
※追記
切れてしまう問題かと思いきや、
NSXMLParserの使い方が間違っていました。
ファイルをダウンロードする時などと同様に、
- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string
に来たstringは全部ではないので
(長さにもよるとは思いますが、
英語では一回で全文字来るようなのですが、
日本語では1文字1文字でしかここには来ないようです)、
一旦、NSMutableStringなどに入れ、
-(void)parser:(NSXMLParser *)parser
didEndElement:(NSString *)elementName
namespaceURI:(NSString *)namespaceURI
qualifiedName:(NSString *)qName
の部分で完了が解るので、そこで初めて、貯めておいた文字列を使う、
という流れにしないとだめでした。
読んだ文字列をまとめた物を
送ってくれるメソッドが欲しいなあとも思いますが・・
これで取りあえず解決できました。

http://www.w3.org/TR/2004/REC-xml-20040204/#sec-white-space