NSXMLParserを使用してXMLの解析をする部分で、使用方法を勘違いしていてハマったのでメモ。
下記メソッドで要素開始タグを検出し、
-(void) parser:(NSXMLParser *) parser
didStartElement:(NSString *) elementName
namespaceURI:(NSString *) namespaceURI
qualifiedName:(NSString *) qName
attributes:(NSDictionary *) attributeDict {
下記メソッドでタグ内の要素を検出して、
-(void)parser:(NSXMLParser *) parser foundCharacters:(NSString *)string
{
下記メソッドで要素終了タグを検出していた。
-(void)parser:(NSXMLParser *)parser
didEndElement:(NSString *)elementName
namespaceURI:(NSString *)namespaceURI
qualifiedName:(NSString *)qName
{
この際に、2番目のメソッド内にて検出した値をそのまま配列に入れて使おうとしたところ、
どうも「1980円」等の文字が、配列の1つ目の中に「1980」、2つ目の中に「円」と入ってしまって、うまく行かなかった。
調べてみたところ、どうやら2番目のメソッドが呼ばれた時点では、引数のstringに全て入っていないという。
と言う訳で、2番目のメソッド内にてNSMutableStringに結合していき、3番目のメソッドにて要素終了タグを検知した時に配列にしまうようにしたところうまく行くようになった。
確かに、そうでないと要素終了タグを検出する意味もあまりなかったような気がしてきます。
(正確には、しっかり検知してなかったので配列の1つ目の中に「1980」、2つ目の中に「円」と入っていました。)
これで、次回からはこの問題でハマる事もなさそうです。
LIGはWebサイト制作を支援しています。ご興味のある方は事業ぺージをぜひご覧ください。