1

VTD-XML を使用して、親要素から一連の子要素を削除しようとしています。

残念ながら、要素を削除した後、削除された要素が以前占有していた新しい行が残ります。この動作は、VTD-XML の作成者による VTD-XML に関する記事の読者によっても確認されています。この新しい行を削除する方法を考えています。

基礎となる 64 ビット VTD トークンに格納されている長さの値を操作して、改行文字 (追加の 2 バイト) をカバーすることで、わずかな成功を収めることができました。コード スニペットは次のとおりです。

// XMLModifier modifier
modifier.remove(vn.getElementFragment()+0x200000000L);

VTD-XML の例でold_cd.xml提供されているものでこれがうまく機能することをテストしました。ex_16

ただし、作業ファイルでこの同じアプローチModifyExceptionを試みると、 を呼び出そうとするとエラーがスローされます。modifier.output()具体的には によってスローされmodifier.check2()ます。

質問

1. 上記のアプローチがcheck2()失敗するのはなぜですか? VTD トークンのビットがオーバーフローしているとは思いません。ファイルは 2MB 未満です。更新を参照してください。
2.残りの新しい行を削除するためのより良い方法はありますか?

私はまだ VTD-XML にかなり慣れていないので、経験豊富なユーザーからアドバイスや洞察を得ることができれば幸いです。

ご協力いただきありがとうございます。

更新
うわー、この質問を書いている過程で、さまざまな文字エンコーディングを考慮するのを忘れていたことに気づき、長い値を1バイトに調整してcheck2()問題を修正しました! (時間をかけて一時停止し、問題を再考/書き出すもう1つの理由)。

これに対するより良いアプローチがあるかどうか、経験豊富なユーザーから知りたいです。

4

1 に答える 1

0

あなたの質問に答えるには、これは API レベルで行う必要があり、周囲の空白をすべて削除するオプションや空白をまったく削除しないオプションなど、いくつかの追加の詳細に注意する必要があると思います。次のリリースで行う必要があります...

于 2013-07-18T19:11:25.187 に答える