ISO 8859/1ストリームとしてフォーマットされたサックスパーサーにソケットを供給しています。非常に頻繁に無効な文字があり、行と列のあるSAXParseExceptionが発生します。そのため、その時点でデータが何であるかを知る必要があります。Java XML:ソケットから解析するときに部分的なXMLツリーのコピーを保持する
は、もともとのデータを処理した行は次の通りであった:
InputSource is = new InputSource(new InputStreamReader(socket.getInputStream(), "ISO8859_1"));
XMLReader reader = XMLReaderFactory.createXMLReader();
reader.setContentHandler(new ResponseParseHandler(etc, id));
reader.parse(is);
問題は、私はこの出来事のイベントの後のデータを得ることができないということですので、私は大規模なバイトバッファに読み取るために、それを変更し、変換しますそれを文字列に変換し、そのデータをStringReaderで解析します。残念ながら、ソケットから来るデータは、長時間に渡って小さなまとまりに広がっているため、最初に接続するときにルートタグで始まりますが、終了タグなしで数千のメッセージが分離して表示されます。
これらの文字列が最初に来るときに私はこれらの文字列を個別に解析しているので、終了タグがないというエラーがあり、次のエラーは基本タグを持たないためエラーです。ストリームがまだ開いていると仮定すると、これはソケットでは発生しません。
おそらく私はこれらの文字列を別のリーダ/ライターに送ることができますが、データブロックが何であったかエラーの時刻
本当にシンプルなものがありますか?
これは、データをストリームとしてXMLとして取得し、エラーが発生した場所を確認することを意味します。 –
はい、それは私が望むものです。 – Woody