XML转义问题:含&字符的地址无法映射的解决方案及常见字符
XML映射特殊字符处理方案及问题字符清单
一、解决&字符的XML自动映射问题
1. 确保输入XML符合规范
&是XML预定义的特殊字符,未转义的&会被解析器判定为实体起始标记,直接导致XML语法错误。上游传入的XML必须把&替换为对应实体&。
2. 代码层面预处理或配置自动转义
如果无法控制上游XML生成逻辑,可以在映射前对地址字段做字符串替换:
// 以addressLine1为例,其他地址字段同理处理 if (addressLine1 != null) { addressLine1 = addressLine1.replace("&", "&"); }
JAXB生成XML时默认会自动转义特殊字符;如果是Axis接收请求,可配置其XML解析器启用自动转义逻辑,避免解析报错。
3. 用CDATA块包裹特殊内容
如果地址字段经常包含大量特殊字符,给对应Java字段添加@XmlCDATA注解,JAXB会把字段内容放在<![CDATA[...]]>块中,块内特殊字符无需转义就能被正确解析:
import javax.xml.bind.annotation.XmlCDATA; import javax.xml.bind.annotation.XmlElement; // ... @XmlElement @XmlCDATA private java.lang.String addressLine1; // 其他地址字段可同理添加注解
二、其他会引发映射错误的特殊字符
除了&,以下字符属于XML语法保留字符,未转义时会破坏文档结构,导致映射失败:
<:需转义为<>:需转义为>":需转义为"':需转义为'
内容的提问来源于stack exchange,提问作者Salman Shaikh
相关产品推荐
相关产品推荐

