Java XMLStreamReader 将“转换为”

Java XMLStreamReader converts " to "

假设,我们有以下 XML

<Test> <Description> &quot;Hi&quot; </Description> </Test>

我使用 XMLStreamReader 加载此 XML 并使用 reader 对象进行解析。当我打印使用 [​​=22=] 的 getText() 解析时遇到的字符时,我看到 &quot; 打印为“。虽然,”(双引号)不需要转义为 &quot; 首先,我想知道为什么解析器在不需要转义时自动进行这种转换。例如,&lt;, &gt; and &amp; 被保留,没有它,结果 XML 将无效。但是,&quot; and &apos; 的情况并非如此。我必须按照接收描述的方式保存描述。是否可以使用 XMLStreamReader API?

I have to save the description the same way I receive it.

你不应该。就XML而言,&quot;"是完全一样的东西,因此你获得一个或另一个对你来说无关紧要。

至于为什么会发生这种情况,XML 解析器的工作是取消转义转义字符,以便它们向您显示它们所指的数据。它还会转义 &lt; 等等。但是,当这样获得的文本随后被序列化回 XML 时,序列化程序将再次转义 < 等字符,因为 XML 需要它,但它不会费心转义 " 因为没有必要。

当你经历一个解析 XML,然后再次序列化的过程时,你不可能有一个 "preserving" 原样转义的概念。这在转换中固有地丢失了。解析器只是不负责保留这些不需要的信息。但是,如果您希望在结果 XML 中始终将 " 转义为 &quot;,您的 XML 序列化程序可能有一个选项(您没有提供详细信息你在用,所以我不能肯定地告诉你你能不能。)