假设我们有以下 XML
<Test> <Description> "Hi" </Description> </Test>
我使用 XMLStreamReader 加载此 XML 并使用读取器对象进行解析。当我使用阅读器的 getText() 打印解析时遇到的字符时,我看到 "
打印为“。虽然,”(双引号)不需要转义为 "
首先,我想知道为什么解析器在不需要转义时会自动执行此转换。例如,<, > and &
保留,否则生成的 XML 将无效。然而," and '
的情况并非如此。 。我必须以收到描述的方式保存描述。是否可以使用 XMLStreamReader API 来做到这一点?
最佳答案
I have to save the description the same way I receive it.
你不应该。就 XML 而言,"
或"
是完全相同的东西,因此您是否获得其中一个对您来说并不重要。
至于为什么会发生这种情况,XML 解析器的工作就是对转义字符进行转义,以便它们向您提供它们所表示的数据。它还逃脱了 <
等等。但是,当将获得的文本序列化回 XML 时,序列化程序将再次转义字符,例如 <
因为 XML 需要它,但它不会逃避 "
因为那是没有必要的。
当您经历解析 XML,然后再次序列化的过程时,您不能有按原样“保留”转义的概念。这本质上是在转换过程中丢失的。解析器只是不负责保留这些不需要的信息。但是,如果您希望您的"
总是被转义到 "
在生成的 XML 中,您的 XML 序列化程序可能有一个选项(您没有提供有关您正在使用的内容的详细信息,因此我无法明确告诉您是否可以。)
关于Java XMLStreamReader 将“转换为”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50038062/