我正在使用 StAX XMLEventReader 解析以下字符串:
final String xmlstr = "<context><book><author>TheName</author></book></context>";
我正在观察 event.getLocation().getCharacterOffset()
值并得到一些奇怪的行为:虽然 START_ELEMENT 的索引在元素声明之后的位置报告(例如,索引 9 为上下文元素),“TheName”的 CHARACTERS 事件据报告位于索引 32 上。为什么?有办法纠正吗?
最佳答案
我从最新的jdk6升级到最新的jdk7时遇到了类似的问题。 com.sun.org.apache.xerces.internal.impl.XMLStreamReaderImpl 中似乎存在错误。 getCharacterOffset() returns incorrect value建议使用不同的 XML 解析器。
(从评论移至答案)
编辑:我对此做了一些更系统的测试,发现 jdk6 中的情况是错误的,而 jdk7 中的情况是正确的,也反之亦然。有趣的是,两个 jdk 中的行号和行列值似乎是一致且正确的。
关于Java、XML事件位置字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15007961/