1

これは本当に困惑しています。多くのCDATAセクションを含むドキュメントを読み取るNSXMLParserがあります。しかし、プログラムの一部の実行で、このメソッドで受け取るデータが間違っていることがわかりました。常に発生するとは限りませんが、発生した場合、通常、実際に読み取る必要のある部分の後に、ドキュメントの他のランダムなセクションが約100文字あります。

簡略化して、私はこれを持っています:

- (void)parser:(NSXMLParser *)parser foundCDATA:(NSData *)CDATABlock {
    NSString *queryFragment = [NSString stringWithUTF8String:[CDATABlock bytes]];
    ....
}

信じられないことに、同じドキュメントの同じセクションを読んでいるときに、変数queryFragmentが期待どおりの結果を得ることがありますが、最後にランダムなジャンクが含まれることもあります。CDATAブロックの終わりを超えて読み取られ、生のXMLを取得するのを見たことがあります。

私はこれを2日間デバッグしています。どんなアイデアでも大歓迎です。

4

1 に答える 1

1

これは間違っています。これは、0で終了するutf-8文字列がstringWithUTF8String:

ただし、生のバイト数は0で終了しました

データを使用する必要があります:

NSString *queryFragment = [[NSString alloc] initWithData:CDATABlock encoding:NSUTF8StringEncoding];
于 2012-12-22T17:55:25.853 に答える