Java XMLStreamReader 将“转换为”

标签 java xmlstreamreader

假设我们有以下 XML

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

我使用 XMLStreamReader 加载此 XML 并使用读取器对象进行解析。当我使用阅读器的 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,然后再次序列化的过程时,您不能有按原样“保留”转义的概念。这本质上是在转换过程中丢失的。解析器只是不负责保留这些不需要的信息。但是,如果您希望您的"总是被转义到 &quot;在生成的 XML 中,您的 XML 序列化程序可能有一个选项(您没有提供有关您正在使用的内容的详细信息,因此我无法明确告诉您是否可以。)

关于Java XMLStreamReader 将“转换为”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50038062/

相关文章:

java - 如何制作Web App在线编译运行Java/C/PHP代码?

java - 如何将 51Degrees.Mobi 与 Maven 一起使用

java - 是否可以在 Java 中动态构建多维数组?

java - Gradle Maven 插件 "install"任务不适用于 Android 库项目

java - XMLStreamReader - 文件末尾会发生什么?

java - Checkmarx 报告中显示 XMLStreamReader/InputStream xxe 漏洞

java - XMLStreamReader 和 XMLEventReader 有什么区别?

java - 如何确保属性文件中的值属于另一个属性文件的键集?