gpt4 book ai didi

Java XML 解析 - VTD-XML 数据的字符串版本不正确

转载 作者:行者123 更新时间:2023-11-30 02:28:27 29 4
gpt4 key购买 nike

我正在使用 VTD-XML 通过 Java 解析 UTF-8 编码的 XML 文档。

一小段摘录如下:

<literal>𠀋</literal>
<literal>𠂉</literal>
<literal>𠂢</literal>

我想迭代每个文字并将其打印到控制台。然而,我得到的是:

¢

我正确导航到每个元素。我获取文本值的方法是调用:

private static String toNormalizedString(String name, int val, final VTDNav vn) throws NavException {
String strValue = null;
if (val != -1) {
strValue = vn.toNormalizedString(val);
}
return strValue;
}

我也尝试过 vn.getXPathStringVal();,但它产生相同的结果。

我知道上面的每个文字不仅仅是长度为 1 的字符串。相反,它们似乎是由两个字符组成的 unicode“字符”。如果汉字字符的长度仅为 1,我就能够正确解析并输出它们。

我的问题是 - 如何使用 VTD-XML 正确解析和输出这些字符?有没有办法获取文字标签之间文本的底层字节,以便我可以自己解析这些字节?

编辑

处理 XML 每一行的代码 - 将其转换为字节数组,然后再转换回字符串。

try (BufferedReader br = new BufferedReader(new FileReader("res/sample.xml"))) {
String line;
while ((line = br.readLine()) != null) {
byte[] myBytes = null;

try {
myBytes = line.getBytes("UTF-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
System.exit(-1);
}

System.out.println(new String(myBytes));
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}

最佳答案

您可能正在尝试获取包含大于 0x10000 的字符的字符串。该错误是已知的,并且正在解决中...修复完成后我会通知您。这个问题可能与这个问题相同...... Map supplementary Unicode characters to BMP (if possible)

关于Java XML 解析 - VTD-XML 数据的字符串版本不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44930636/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com