SAXパーサーにはこのメソッドがあります
characters(char ch[], int start, int length)
私が理解していることは、タグ内の文字列を取得することです。私が気付いたのは、SAX パーサーが大きな XML ファイルで実行し続けると、int の開始がどんどん大きくなり、最大 int 値を超えることです。
最初から印刷しましたが、ランダムに数字が飛び続けているようです。数はどのように決まるのですか?
ありがとうございました
通常、SAX パーサーは一度にバッファいっぱいのデータを読み取ります。特定の時点で、バッファには次のようなものが含まれる場合があります
="a" foo="bar"><b x="1">some text</b></a><c
パーサーがこのバッファー内のテキスト ノードを報告するとき、このバッファー全体を含む char[] 配列を start=24 length=9 で指定して、ContentHander を呼び出す可能性があります。または、必要に応じて、一連の呼び出しと同じデータを提供することもできます。テキスト ノードがたまたま次のように 2 つのバッファにまたがる場合:
="a" foo="bar"><b x="1">some
text</b></a>
次に、最初の呼び出しで最初のバッファーに start=24 length=4 を指定し、2 番目の呼び出しで 2 番目のバッファーに start=0 length=5 を指定します。
アイデアは、パーサーが元のバッファーからデータを移動して連続した文字列に組み立てるコストを負担する必要がないということです。理論的には、これによりパフォーマンスが向上します。実際には、ほとんどの SAX アプリケーションは、テキスト ノードのコンテンツを連続した文字列に収集する必要があるため、コピーのコストは単純にアプリケーションに移されます。
実際には、start と length の値や、これらの境界外の char[] 配列の内容を気にする必要はありません。これらの境界内のデータを StringBuilder にコピーするだけです。