2009-07-03 8 views
1

NSXMLParserを使用してXMLファイルを解析する必要があります。それらには非常に多くのHTMLタグがあるので、それを解析しようとすると、それまでの文字列を保存してから再び文字メソッドを見つけて追加し始めます。 私のコードは次のとおりです。NSXMLParserを使用してXMLファイルを解析する

if (Bio_CResults) { 
    [BioResults appendString: string]; 
    [Info appendString:string]; 

    [stringarr addobject:Info]; 
    NSLog(@"bio==%@",BioResults); 
    NSLog(@"string==%@",string); 
} 

と私は文字列の配列で、それを追加したいが、ここでは、配列の余分なオブジェクトを作成するようになります。すなわち

stringarr objectAtIndex 0 = abc 
stringarr objectAtIndex 1 = def 
stringarr objectAtIndex 2 = ghi 

しかし、彼らは実際には1つの文字列であるため、実際に私が一緒に一つのオブジェクトでそれらのすべてをしたい... あなたも、あなたができる複数の文字列オブジェクトを必要としない場合はplzはその

答えて

3

ために私を助けて配列の代わりにNSMutableStringを使用してください。ただ、文字列の末尾に追加するappendString:メソッドを使用します。

NSMutableString *string = [NSMutableString string]; 
[string appendString:@"abc"]; 
[string appendString:@"def"]; 
NSLog(@"New string is %@", string); 

これは「新しい文字列がABCDEFある」ログに記録されます。


本当に配列が必要な場合は、NSArrayの代わりにNSMutableArrayを使用します。そうすれば、オブジェクトをインプレースで変更することができます(別の文字列を追加して新しい文字列に置き換える)。したがって、たとえば:

// First create an array with @"abc" 
NSMutableArray *mArray = [NSMutableArray arrayWithObject:@"abc"]; 

// Next get the first object as a string and append @"def" to it in-place 
NSString *string = (NSString *)[mArray objectAtIndex:0]; 
[mArray replaceObjectAtIndex:0 withObject:[string stringByAppendingString:@"def"]]; 

// Now get the new first object 
NSLog(@"First object is %@", (NSString *)[mArray objectAtIndex:0]);

これは、 "最初のオブジェクトはabcdefです"というメッセージを記録します。

+0

彼はすでに変更可能な配列を使用しようとしていると思います。私は "addobject:"は彼の質問の誤植であると推測しています。そして、彼はまた "appendString:"を使用しているので、私は彼が可変配列を使って何を達成しようとしているのか分かりません。 :-) –

+0

問題は、彼がreplaceObjectAtIndex:withObject:を呼び出すのではなく、オブジェクトを追加していることでしょうか? appendString:onという2つの変更可能な文字列は、(parser:foundCharacters:メソッドの)XMLパーサからのデータを格納するために使用する文字列であり、古いものを置き換えるのではなく、配列に追加するだけです。いずれにせよ、答えは立っている:) – Tim

1

私は本当にNSXmlParserが好きではありません。 RegxKitLiteを使用して私のブログの記事を読むことができます http://blog.bluespark.co.nz/?p=51

それは助けかもしれません。うまくいけばそれは間違った方向にあなたを導かないでしょう。

Cheers、John。

1

非常に多くのHTMLタグが

は、HTMLは通常、有効なXMLではないことに注意してください...そこにあります。 HTMLを解析している場合、XMLパーサーはドキュメントの途中でエラーをスローします。

WebViewの作成、HTMLコンテンツの読み込み、ビューのメインフレームからのDOMDocumentの取得、DOM階層のトラバースをお勧めします。ビューをウィンドウに配置する必要はありません。あなたはそれを使ってDOMDocumentを得ることができます。

XMLを解析して「XMLタグ」と言う場合、この回答は無視できます。

関連する問題