0
VTD-xml v2.11を使用していて、getContentFragmentを使用してタグの内容を取得しようとしています。 xmlにutf-8エンコーディングがある場合、コードは正常に動作します。しかし、UTF-16エンコーディングでは、オフセットとlenの変換に失敗しています。UTF-16でエンコードされたXML用にVTDXMLを使用してContentFragmentを解析する
while ((i = ap.evalXPath()) != -1) {
long l = vn.getContentFragment();
if (l != -1) {
int len = (int) (l >> 32);
int offset = (int) l;
sb.append(vn.toString(offset, len));
}
}
これは、UTF-8 XMLSのために動作しますが、UTF-16のためにそれは我々がのtoString(、LENオフセット)メソッドを呼び出しarrayindexoutofBoundをスローします。 UTF-16でエンコードされたxml文字列の長さとオフセットを処理する方法を理解するのに役立つでしょうか。
事前のおかげで...
ありがとう、私はこれを試してみます。 UTF-16の場合はoffset/2とlen/2を使用して回避することができました。 – Anil
ニースは知っていますが、私はまだ2.13.1へのアップグレードをお勧めします –
2.13.1と上記のコードと同じコードを使用しようとしましたが、xmlでエンコーディング= UTF-16が提供されても配列インデックスが範囲外です宣言。私たちはこの宣言をutf-16として持っているときにバイトをUTF-16に設定します。 – Anil