3

NSXMLParser を使用して一部の HTML を解析していますが、アンパサンドが検出されるたびにパーサー エラーが発生します。解析する前にアンパサンドを除外することもできますが、そこにあるすべてのものを解析したいと思います。

エラー 68、NSXMLParserNAMERequiredError: 名前が必要です。

私の最善の推測は、それが文字セットの問題であるということです。私はキャラクター セットの世界について少し曖昧なので、私の無知が私を悩ませているのだと思います。ソース HTML は charset iso-8859-1 を使用するため、このコードを使用してパーサーを初期化しています。

NSString *dataString = [[[NSString alloc] initWithData:data encoding:NSISOLatin1StringEncoding] autorelease];
NSData *dataEncoded = [[dataString dataUsingEncoding:NSUTF8StringEncoding allowLossyConversion:YES] autorelease];
NSXMLParser *theParser = [[NSXMLParser alloc] initWithData:dataEncoded];

何か案は?

4

3 に答える 3

7

他の投稿者へ: もちろん、XML は無効です... HTML です!

おそらく HTML に NSXMLParser を使用するべきではなく、むしろlibxml2を使用するべきです。

その理由について詳しくは、この記事をご覧ください。

于 2009-11-12T00:53:27.227 に答える
2

有効な XML がありますか? 生の XML ファイルでは、 & などの特殊文字をエスケープする必要があります。&

于 2009-11-12T00:47:33.897 に答える
0

NSStringとにかく、自分で割り当てられていないオブジェクト(dataUsingEncoding)を自動解放しているため、クラッシュします。解決策は次のとおりです。

NSString *dataString = [[NSString alloc] initWithData:data
                             encoding:NSISOLatin1StringEncoding];

NSData *dataEncoded = [dataString dataUsingEncoding:NSUTF8StringEncoding 
                                     allowLossyConversion:YES];

[dataString release];

NSXMLParser *theParser = [[NSXMLParser alloc] initWithData:dataEncoded];
于 2012-11-02T15:37:37.623 に答える