2

次の文字列を StAX XMLEventReader で解析しています。

final String xmlstr = "<context><book><author>TheName</author></book></context>";

値を観察するevent.getLocation().getCharacterOffset()と、いくつかの奇妙な動作が発生します。START_ELEMENT のインデックスは要素宣言の後の位置 (たとえば、コンテキスト要素のインデックス 9) で報告されますが、"TheName" の CHARACTERS イベントはインデックス 32 にあると報告されます。 。 どうして?それを修正する方法はありますか?

4

1 に答える 1

2

最新の jdk6 から最新の jdk7 に移行するときに、同様の問題が発生しました。com.sun.org.apache.xerces.internal.impl.XMLStreamReaderImpl にバグがあるようです。getCharacterOffset() が間違った値を返すため、別の XML パーサーを使用することをお勧めします。

(コメントから回答に移動)

編集:これについてさらに体系的なテストを行ったところ、jdk6で間違っているケースとjdk7で正しいケース、およびその逆のケースが見つかりました。興味深いことに、行番号と行の列の値は、両方の jdk で一貫しており、正しいように見えます。

于 2013-03-07T15:53:04.993 に答える