Java怎么把ResultSet直接转换成XML

12次阅读

java中ResultSet不能一键转xml,但可用JDBC配合XMLstreamWriter(推荐)或StringBuilder拼接实现:先用ResultSetMetaData获取列信息,再逐行生成带根节点和row元素的XML,注意NULL处理及避免rs.getString强转。

Java怎么把ResultSet直接转换成XML

Java 中 ResultSet 本身不能直接“一键转 XML”,但可以通过标准 JDBC API 配合简单逻辑,把查询结果逐行遍历生成符合结构的 XML 字符串。核心思路是:用 ResultSetMetaData 获取列名和类型,再用 XMLStreamWriter(推荐)或字符串拼接方式输出格式化 XML。

用 StAX(XMLStreamWriter)生成规范 XML

这是最推荐的方式——轻量、内存友好、不依赖第三方库(JDK 6+ 自带),还能控制缩进和编码

  • 创建 XMLStreamWriter,例如写入 StringWriter 或文件
  • 调用 writeStartDocument() 开始文档,writeStartElement("rows") 作为根节点
  • 遍历 ResultSet,每行调用 writeStartElement("row")
  • rsmd.getColumnName(i)rs.getObject(i) 获取字段名与值,写为子元素(如 1
  • 注意对 null 值做空字符串处理,对特殊字符(& 等)无需手动转义——XMLStreamWriter 自动处理

简化版:用 StringBuilder 拼接(适合小数据、快速验证)

如果只是临时调试或结果很小,可跳过 StAX,用字符串拼接:

  • 开头写 ""
  • 循环中拼接 "" + escapeXml(value) + ""+colName+">"
  • 务必实现简单的 escapeXml() 方法(替换 &&zuojiankuohaophpcn>youjiankuohaophpcn
  • 结尾补上 ""

注意事项

避免踩坑的关键点:

立即学习Java免费学习笔记(深入)”;

  • 别用 rs.getString(i) 强转所有字段:日期、二进制等类型会出错;统一用 rs.getObject(i) 再 toString()
  • ResultSet 必须保持打开状态:转换过程需在 rs.next() 循环内完成,不能提前 close()
  • 列名大小写敏感:部分数据库(如 postgresql)默认小写,getColumnName() 返回的是实际大小写,建议统一转小写或按需处理
  • 不建议用 dom 或 JAXB 直接映射:ResultSet 是游标式结构,没有固定 Java Bean 类型,硬套反而复杂

基本上就这些。不需要额外依赖,JDK 自带能力就能稳妥搞定。重点是别跳过元数据获取和空值/特殊字符处理。

text=ZqhQzanResources