Java 使用VTDXML为UTF-16编码的xml解析ContentFragment

Java 使用VTDXML为UTF-16编码的xml解析ContentFragment,java,xml,vtd-xml,Java,Xml,Vtd Xml,我正在使用vtdxmlv2.11,并尝试使用getContentFragment获取标记的内容。当xml使用utf-8编码时,代码工作正常。但对于UTF-16编码,偏移量和len转换失败 while ((i = ap.evalXPath()) != -1) { long l = vn.getContentFragment(); if (l != -1) { int len = (int) (l >> 32);

我正在使用vtdxmlv2.11,并尝试使用getContentFragment获取标记的内容。当xml使用utf-8编码时,代码工作正常。但对于UTF-16编码,偏移量和len转换失败

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 XML,但对于UTF-16,当我们调用toString(offset,len)方法时,它会抛出ArrayIndexOutof绑定。请帮助理解如何处理UTF-16编码的xml字符串的长度和偏移量


提前感谢…

我认为这可能已在vtd xml的2.13.1版本中修复。你能下载并再试一次吗?

谢谢你的建议,我会试试这个。同时,在UTF-16的情况下,我们可以通过使用offset/2和len/2来解决这个问题。很高兴知道,但我仍然建议升级到2.13.1。我尝试使用2.13.1和上面列出的相同代码,但是当xml声明中提供了encoding=UTF-16时,仍然收到数组索引超出范围错误。当我们将这个declarion设置为UTF-16时,我们将字节设置为UTF-16。你能创建一个测试用例吗?这样我就可以更深入地研究它了?这是toString方法的一个bug。。将在2.13_2中修复此问题