1

これは奇妙です..

私は実際にすべてをうまく処理している DefaultHandler を持っていますが、明らかな理由もなく、正しい値ではなく 0 を返すことがあります。これは毎回同じ場所で発生しているため、何か問題がありますが、何が原因かわかりません!

問題はこれです。「17:00:00」のような時間を解析しています。パーサーが「奇妙な時間」に到着すると、次のように解析します->「17:00:0」、メソッド文字(char[] ch、int start、int end)をもう一度呼び出し、最後の「0」。

なんてこと?

実際には、8 ではなく 7 に終わりを設定します。そして、これはいくつかの値を除いてすべてに対して機能します!

コードは非常に簡単で、単純な saxparser です。これはキャラクターメソッドです:

    public void characters(char[] ch, int start, int end) {
    if(on_element)
        value = new String(ch, start, end);
    }

ヒントはありますか?

4

1 に答える 1

3

このcharactersメソッドは、1 組の開始タグと終了タグ内のテキストに対して複数回呼び出すことができます。

あなたのコードは、一度だけ呼び出されることを前提としています。これは、小さなデータにはしばしば当てはまりますが、常にではありません。

そのタグのメソッドでバッファを初期化し、startElementメソッドでバッファに収集し、charactersバッファを の文字列に変換する必要がありますendElement

ユーザーが同じ間違いを犯していたこの質問に対する私の回答には、ユーザーが投稿したより完全なコードを修正するためにこれを行うコードが含まれています。あなたのコードに役立つかもしれない読書。

于 2012-07-01T11:25:49.380 に答える