Java XMLStreamReader解析时自动转换"为"的原因咨询
为什么XMLStreamReader会把"自动转换为"?
这其实是XML解析的标准行为,咱们来拆解背后的逻辑:
首先,XML规范里定义了几个内置实体(比如&、"、<等),要求所有合规的XML解析器必须自动解析这些实体,把它们转换成对应的原始字符。而你遇到的情况是嵌套实体的解析:
你的XML内容是:
<Test> <Description> &quot;Hi&quot; </Description> </Test>
解析器会分两步处理这个内容:
- 先识别并解析第一层的
&实体,把它转换成&。这时候<Description>里的内容就变成了"Hi"。 - 接着解析器会继续处理这两个
"实体,把它们转换成双引号",最终你通过getText()拿到的就是"Hi"。
可能你会疑惑:既然双引号在XML元素内容里不需要转义,为什么解析器还要处理?其实问题出在你的原始XML里写的是嵌套的实体,解析器只会按照XML规范的要求逐层解析所有内置实体,不管这个实体是不是“必要”的。这种设计的目的是让开发者能直接拿到最终的文本内容,不用自己手动处理实体转义的繁琐工作。
简单说,XML解析器的职责就是把XML文档里的实体表示还原成真实的字符,这是它的核心功能之一~
内容的提问来源于stack exchange,提问作者kishore
相关产品推荐
相关产品推荐

