Java中将ResultSet转XML有三种主流方式:手动拼接(适合简单场景,需转义特殊字符)、DOM构建(推荐,结构规范可控)、JAXB序列化(需POJO映射,JDK9+需额外引入依赖),均需注意空值、LOB、日期格式和编码处理。

Java中将ResultSet转换为XML,核心思路是遍历结果集,逐行逐列提取数据,按XML结构拼接或使用DOM/SAX/JAXB生成标准XML文档。关键在于处理字段名、空值、特殊字符和编码问题。
手动拼接XML字符串(适合简单场景)
适用于小数据量、结构固定、对XML格式要求不高的情况。注意转义、&、"、'等字符,避免XML解析失败。
- 用ResultSetMetaData获取列名和列数
- 每行用
包裹,每列用值列名>表示 - 对字段值调用
StringEscapeUtils.escapeXml11()(Apache Commons Text)或手动替换 - 开头加上
,结尾加
使用DOM构建标准XML文档(推荐,可控性强)
适合需要规范命名空间、属性、缩进或后续修改的场景。内存占用略高,但结构清晰、可校验。
- 创建
DocumentBuilder,新建Document - 添加根元素(如
result),循环ResultSet,为每行创建row元素 - 对每一列,创建子元素(或设为属性),用
Text节点设置内容并自动处理转义 - 用
Transformer输出时设置OutputKeys.INDENT和ENCODING
借助JAXB(适合映射到Java对象后再转XML)
当已有对应实体类且结构稳定时最简洁。ResultSet先转List
本文档主要讲述的是Android数据格式解析对象JSON用法;JSON可以将Java对象转成json格式的字符串,可以将json字符串转换成Java。比XML更轻量级,Json使用起来比较轻便和简单。JSON数据格式,在Android中被广泛运用于客户端和服务器通信,在网络数据传输与解析时非常方便。希望本文档会给有需要的朋友带来帮助;感兴趣的朋友可以过来看看
立即学习“Java免费学习笔记(深入)”;
- 定义POJO类,标注
@XmlRootElement和@XmlElement - 遍历ResultSet,反射赋值或手动封装为对象列表
- 调用
JAXBContext.newInstance(...).createMarshaller().marshal() - 注意:JAXB在JDK9+默认移除,需引入
jaxb-api和jaxb-runtime
注意事项与避坑点
无论哪种方式,都需关注:
-
空值处理:ResultSet.getObject(i)返回null时,XML中建议输出
或(需声明xsi命名空间) - LOB字段(BLOB/CLOB):避免直接toString(),应读取为String或Base64编码后写入
-
日期时间格式:用
SimpleDateFormat统一转为ISO 8601格式(如yyyy-MM-dd HH:mm:ss) -
字符编码:确保数据库连接URL含
useUnicode=true&characterEncoding=UTF-8,XML声明也设为UTF-8









