我正在使用 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“字符”。如果它们的长度只是一个,我能够正确解析和输出汉字字符。
我的问题是 - 如何使用 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();
}