このコードは、Blackberry JDE v4.2.1で実行されています。これはXMLを返すWeb API呼び出しを行うメソッドです。時々、返されたXMLは整形式ではないので、解析する前に無効な文字を取り除く必要があります。J2MEのストリームから無効なXML文字を取り除く方法はありますか? org.xml.sax.SAXParseException:無効な文字
現在、私は得る:org.xml.sax.SAXParseException: Invalid character '' encountered
。
無効な文字ストリッパーを入力ストリームに添付して、ストリームがバリデーター/ストリッパーと解析呼び出しの間を流れるようにするアイデアを見たいと思います。つまり、ストリームのコンテンツを保存しないようにしようとしています。
既存のコード:
ハンドラはAPI URL
hconn = (HttpConnection) Connector.open(url,Connector.READ_WRITE,true);
...
try{
XMLParser parser = new XMLParser();
InputStream input = hconn.openInputStream();
parser.parse(input, handler);
input.close();
} catch (SAXException e) {
Logger.getInstance().error("getViaHTTP() - SAXException - "+e.toString());
}
Blackberryは明らかにFilterReaderも持っていないので、私はこれを使用しないように修正しました。 –
RIMにCharacter.isValidCodePoint()も含まれていません 私は自分自身をロールバックしなければなりませんでした。しかし、この方法はうまくいくように見えます - シミュレータでは少なくとも。うまくいけば、それはまた、実際のデバイスでは遅すぎることもありません。ありがとう! –
ようこそ。ちょうどよくテストするようにしてください。すべてのキャラクターが(再)チェックされなければならないので、不可避的に遅くなるでしょう。しかし、私は不必要なコピーをしているとは思わない。 P.S. isValidCodePointの実装方法が不思議です。 –