2017-04-05 7 views
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文字列の長さとオフセットを処理する方法を理解するのに役立つでしょうか。

事前のおかげで...

答えて

0

私は、これはVTD-XMLの2.13.1バージョンで修正されているかもしれないと思います。あなたはそれをダウンロードしてもう一度試すことができますか?

+0

ありがとう、私はこれを試してみます。 UTF-16の場合はoffset/2とlen/2を使用して回避することができました。 – Anil

+0

ニースは知っていますが、私はまだ2.13.1へのアップグレードをお勧めします –

+0

2.13.1と上記のコードと同じコードを使用しようとしましたが、xmlでエンコーディング= UTF-16が提供されても配列インデックスが範囲外です宣言。私たちはこの宣言をutf-16として持っているときにバイトをUTF-16に設定します。 – Anil

関連する問題