gpt4 book ai didi

java - XML 编码 - 使用 UTF-8 格式的 Xstream 将文件中的 XML 文本转换为对象

转载 作者:行者123 更新时间:2023-12-01 13:25:05 24 4
gpt4 key购买 nike

我试图指示 Xstream 将 XML 转换为对象,但仅以 UTF-8 格式读取它。这就是我试图实现这一目标的方式:

FileInputStream inStream = new FileInputStream((String) original);
InputStreamReader reader = new InputStreamReader(inStream, Charset.forName("UTF-8"));

xstream.fromXML(reader, myObject);

上面进行了编码,但由于某种原因出现了以下文本:

Lorem Ipsum &#xA7

始终转换为:

Lorem Ipsum §

我不希望它进行任何转换,因此我希望文本保留为 Lorem Ipsum §。我在这里做错了什么吗?

最佳答案

不幸的是,几乎所有 XML 解析器都会自动解析字符引用,因此字符串 (§) 中的字符引用将被解析为真正的底层 Unicode 字符。

我研究了 XPP3、Oracle Java DOM 解析器、Stax 解析器和 SAX 解析器的底层实现。所有这些都会自动解析字符引用,没有选项可以禁用它(您可以让 SAX 解析器不解析属性中的字符引用,但不解析元素文本中的字符引用,并且只能通过一些令人讨厌的欺骗手段)

因此,除了编写自己的 XML 解析器之外,您可能只有两个选择:

1) 让解析器/XStream 解析字符,然后“重新编码”对象中的任何特殊字符

2) 在解析 XML 流之前对其进行预处理,并转义 & 字符(即,如果将其替换为 § 那么它将正常工作)。

关于java - XML 编码 - 使用 UTF-8 格式的 Xstream 将文件中的 XML 文本转换为对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21837508/

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