一部のサーバーからのphpクエリの結果として、xmlファイルを取得しています。結果のデータをコンソールに出力すると、適切に構造化された xml ファイルが得られます。NSXMLParser を使用して解析しようとすると、コード 4 - 空のドキュメントで NSXMLParserErrorDomain が返されます。解析できなかった xml には、xml ヘッダーの '>' マークを閉じた直後に BOM (バイト オーダー マーク) シーケンスがあることがわかりました。問題は、BOM シーケンスを削除する方法です。そのような BOM バイトで文字列を作成しようとしました:
const UInt8 bom[3] = {0xEF, 0xBB, 0xBF};
NSString *bomString = [[NSString alloc] initWithData:[NSData dataWithBytes:(const void *)bom length:3] encoding:NSUTF8StringEncoding];
NSString *noBOMString = [theResult stringByReplacingOccurrencesOfString:bomString withString:@" "];
しかし、何らかの理由で機能しません。ルート要素の後にこのシーケンスを持つ xml があります。この場合、NSXMLParser は xml を正常に解析します。Safari はこれらの文字を無視します。だからXcodeデバッガ。助けてください!
ありがとう、
ナバ