使用XSLT 3.0与Saxon PE 11.4控制XML在JSON中的序列化
问题解答
写法合理性判断
你第二种将XML内容嵌入文档节点的文本节点再序列化的写法是合理的。因为要让JSON的xmlData字段里的XML字符串能被外部伪代码直接解析,必须保证XML的特殊字符(<、>、&等)不被JSON序列化逻辑二次转义。直接输出XML节点时,XSLT的输出序列化会把这些字符转义成实体(比如<),最终JSON里的xmlData字段就是带实体的文本,外部解析时拿不到可直接识别的XML结构。而把XML内容转为文本节点后,XSLT会保留原始特殊字符,输出成JSON字符串时就能得到符合要求的、未被额外转义的XML内容。
潜在隐患分析
当前写法能解决问题,但有几个需要留意的点:
- XML结构完整性风险:如果原XML包含CDATA段、处理指令或注释,转为文本节点时可能丢失部分结构信息,若业务场景涉及这类内容,得提前做兼容性处理。
- 字符编码问题:若原XML使用非UTF-8编码,嵌入文本节点时可能出现编码转换错误,导致最终JSON里的XML字符串乱码,要确保XSLT处理的编码和外部解析环境一致。
- 性能影响:如果XML内容体积庞大,先转文本节点再序列化会增加内存占用和处理时间,大文件场景下需评估性能是否达标。
- JSON边界冲突:若XML内容里包含JSON字符串的边界符(比如双引号
"),会破坏JSON结构,这种情况要提前对XML里的双引号做转义(比如换成\"),否则外部解析JSON时会报错。
内容的提问来源于stack exchange,提问作者MrD at KookerellaLtd
相关产品推荐
相关产品推荐

