0

最新のツイートを取得してアプリに表示します。それを NSMutableString に入れて、xmlparser.m ファイルで以下のようにその文字列を初期化します。

- (void) parser:(NSXMLParser *)parser foundCharacters:(NSString *)string
{
    currentNodeContent = (NSMutableString *) [string stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
}

ツイートを取得できますが、どういうわけか、一部のツイートが切り取られ、その一部が表示されます。例えばツイートは

教室でビデオゲーム?ソーシャルメディアと #テクノロジー は教育を変えることができますhttp://bit.ly/KfGViF @GOVERNING #edtech

しかし、それが示しているのは次のとおりです。

#テクノロジーは教育を変えることができるhttp://bit.ly/KfGViF @GOVERNING #edtech

なぜだと思いますか?他の方法で currentNodeContent を初期化しようとしましたが、問題を解決できませんでした。

なぜこれが起こっているのか分かりますか?

4

2 に答える 2

1

イベント ドリブン (SAX) パーサーは、コールバックでノードのテキストの一部のみを自由に返すことができます。渡されたツイートの一部しか取得していない可能性があります。要素の終わりを示すコールバックを取得するまで、変更可能な文字列に文字を蓄積する必要があります。このガイドのリスト 3 とその前後のテキストを参照してください。

于 2012-04-27T02:29:24.367 に答える
0

ここには 2 つの問題があります。

- (void) parser:(NSXMLParser *)parser foundCharacters:(NSString *)string
{
    currentNodeContent = (NSMutableString *) [string stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
}

NSStringanを an にキャストするだけでNSMutableStringは機能しません。変更可能なコピーを自分で作成するかNSMutableString、の内容を使用して新しいコピーを初期化する必要がありNSStringます。

さらに、テキスト パーサーは文字列の最後の部分しか提供していません。これは、' &' を単にエンティティ参照の一部として解釈している可能性があるか、エンティティ参照自体である可能性があるためです。

おそらくやりたいことは次のとおりです。

  1. 解析を開始する前にcurrentNodeContent、空になるように初期化しNSMutableStringます。

    currentNodeContent = [NSMutableString string];
    
  2. 解析中に、次の文字を に追加currentNodeContentします。

    [currentNodeContent appendString:[string stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
    
于 2012-04-27T04:10:40.223 に答える