-3

私はAndroidでSAXパーサーを使用しています。EventHandlerを次のように変更する必要がありました。

else if(xGrowerNotes){
              profile.setGrowerNotes(profile.getGrowerNotes()+chars);
              //random bug
          }

UTF-8でエンコードされた4言語のXMLファイルのバージョンがあります。パーサーを

is.setEncoding("UTF-8");

3つの言語は問題なく動作しますが、スペイン語の言語は私を悩ませます。それはNoapretarlasplantasのように始まります。Regul...そしてイベントは2回呼び出されます。変更がなければ、最初の部分を切り取って、「arlasplantas。Regul...」だけをテキストとして設定することになります。文字列の前に「test123」を追加すると、カットが移動します。つまり、最初の13文字がカットされたようになります。これはスペイン語バージョンのみであり、すべてのドキュメントが同じようにエンコードされています。テキストの最後に「test123」を追加すると、2番目の文字列が拡張されます。

誰かがこれを明確にできますか?前もって感謝します!

4

1 に答える 1

0

ドキュメントから:

パーサーはこのメソッドを呼び出して、文字データの各チャンクを報告します。SAX パーサーは、連続するすべての文字データを 1 つのチャンクで返すか、複数のチャンクに分割します。ただし、ロケータが有用な情報を提供できるように、単一のイベントのすべての文字は同じ外部エンティティから取得する必要があります。

これは、1 回の呼び出しですべての文字データを取得すると想定してはならないことを意味します。完全なデータを取得するには、おそらく複数の呼び出しで報告されたすべてのチャンクを追加する必要があります。

于 2013-02-11T12:17:15.477 に答える