0

假设,我们有以下 XML

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

我使用 XMLStreamReader 加载此 XML 并使用 reader 对象进行解析。当我打印使用阅读器的getText()解析时遇到的字符时,我看到&quot;打印为“。虽然,”(双引号)首先不需要转义&quot;,但我想知道为什么不需要转义时解析器会自动进行此转换。例如,&lt;, &gt; and &amp;保留,否则生成的 XML 将无效。但是,情况并非如此&quot; and &apos;。我必须以我收到它的方式保存描述。是否可以使用 XMLStreamReader API 做到这一点?

4

1 回答 1

1

我必须以我收到它的方式保存描述。

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

至于为什么会发生这种情况,XML 解析器的工作是对转义字符进行转义,以便它们向您呈现它们所指的数据。它也没有转义&lt;等等。然而,当这样获得的文本随后被序列化回 XML 时,序列化器将再次转义字符,例如<因为它是 XML 需要的,但它不会打扰转义",因为那不是必需的。

当您经历解析 XML 的过程,然后再次序列化时,您不能有“保留”原样的转义的概念。这在转换中固有地丢失了。解析器只是不负责保存这些不需要的信息。但是,如果您希望"始终&quot;在生成的 XML 中转义,您的 XML 序列化程序可能有一个选项(您没有提供有关您正在使用的内容的详细信息,所以我无法明确告诉您是否可以或不能.)

于 2018-04-26T08:25:02.943 回答