假设我们有以下XML
<Test> <Description> "Hi" </Description> </Test>
我使用XMLStreamReader加载此XML并使用reader对象进行解析。当我使用阅读器的getText()解析时遇到的字符,我看到"
被打印为&#34;。虽然&#34;(双引号)首先不需要转义为"
,但我想知道为什么解析器在不需要转义时会自动执行此转换。例如,保留<, > and &
,否则生成的XML将无效。但是," and '
不是这种情况。我必须像收到它一样保存描述。是否可以使用XMLStreamReader API执行此操作?
答案 0 :(得分:1)
我必须像收到说明一样保存说明。
你不应该。就XML而言,"
或"
完全相同,因此无论您是获得其中一种都无关紧要。
至于它为什么会发生这种情况,它是一个XML解析器的工作来转移转义的字符,以便它们向您提供它们所指的数据。它还会发布<
等等。但是,当这样获得的文本被序列化为XML时,序列化程序将再次转义<
之类的字符,因为它需要XML,但它不会忘记转义{{1}因为没有必要。
当你经历一个解析XML的过程,然后再次序列化时,你不能有一个&#34;保留&#34;的概念。逃避原状。这在转换中固有地丢失了。解析器不负责保留这些不需要的信息。但是,如果您希望在生成的XML中始终将"
转义为"
,那么您的XML序列化程序可能会有一个选项(您没有提供有关您正在使用的内容的详细信息,因此我无法告诉你你是否可以。)