文字列から「&」記号を削除するにはどうすればよいですか。私のxmlパーサーが失敗しています。
私が試してみました
[currentParsedCharacterData setString: [currentParsedCharacterData stringByReplacingOccurrencesOfString:@"&" withString:@"and"]];
でも効果はないようです
文字列から「&」記号を削除するにはどうすればよいですか。私のxmlパーサーが失敗しています。
私が試してみました
[currentParsedCharacterData setString: [currentParsedCharacterData stringByReplacingOccurrencesOfString:@"&" withString:@"and"]];
でも効果はないようです
つまり、無効な XML を適切に処理したいということです。XML パーサーは、この XML が無効であることを適切に伝えているため、解析に失敗しています。この XML コンテンツを制御できないと仮定すると、このような一般的なエラーを事前に解析することをお勧めします。その出力は、成功の可能性が高いサニタイズされた XML ドキュメントになります。
ドキュメントをサニタイズするには、検索と置換を行うのと同じくらい簡単かもしれませんが、ブランケット置換を行うだけの問題は、たとえばまたは&
の有効な使用法があることです。次のようなものを作成して、XML を変更することになります。&
&
©
andcopy;
「アンパサンド スペース」を検索することはできますが、最後の文字としてアンパサンドを含む文字列 (簡単に処理できるアウトケース) は検出されません。実際に探しているのは&
、a が続かない の出現、またはセミコロンはそれ自体で問題ないため;
、次の前に任意のタイプの空白が出現する出現です。;
これやその他のエラーを検出する必要があるため、より多くの電力が必要な場合は、NSScannerまたはRegExマッチングにアクセスして、サニタイズ手順中にこのエラーやその他の一般的なエラーの発生を検索することをお勧めします。また、XML ファイルがかなり大きなものになることも非常に一般的です。そのため、これらをメモリ内文字列として扱う場合は注意が必要です。これによりアプリケーションがクラッシュしやすくなる可能性があります。管理しやすいチャンクに分割することは、NSScanner が非常にうまくできることです。
NSStringのstringByReplacingOccurrencesOfStringを簡単に確認してください。
NSString* str = @"a & b";
[str stringByReplacingOccurrencesOfString:@"&" withString:@"and"]; // better replace by &
ただし、他の文字、つまり<>も処理する必要があります