【问题标题】:Best Way to get XML from a JDBC resultset从 JDBC 结果集中获取 XML 的最佳方法
【发布时间】:2009-01-08 20:22:47
【问题描述】:

我正在寻找从 JDBC 结果集中获取 XML 文档的最佳方法。 XML 的结构不是很重要,但应该相当快。

为了清楚起见,我想要结果集中的数据和足够的元数据来识别数据(本质上是字段名称)。我目前正在使用 MySQL、DB2、SQL Server,但解决方案需要与数据库无关(因为 SQL Server 中的 XML 不是一个可行的选择)。

【问题讨论】:

  • Here你可以找到一个好的解决方案。

标签: java xml jdbc


【解决方案1】:

通过使用WebRowSet,一次就可以将整个ResultSet 转换成XML。 WebRowSet 生成的 XML 非常清晰和简单,我不确定速度,因为它还取决于驱动程序的实现。

这里有一篇关于WebRowSet using Oracle 的好文章,我猜它会满足你的需求。

【讨论】:

    【解决方案2】:

    您是否希望将 ResultSet 表转换为 XML?我不知道有任何第三方工具,但 tt 推出自己的工具并不难。

    你的两个选择是要么有一个恒定的格式:

    <ResultSet>
      <MetaData>
        <Column name="...." type="..."/>
        ....
      <MetaData>
      <Data>
        <Row><Cell value="valueConvertedToString"/><Cell null="true"/></Row>
        ....
      </Data>
    </ResultSet>
    

    或特定于元数据:

    <ResultSet>
      <MetaData>
        <Column name="id" type="int"/>
        <Column name="color" type="string"/>
        ....
      <MetaData>
      <Data>
        <Row><id value="45"/><color null="true"/></Row>
        ....
      </Data>
    </ResultSet>
    

    在第二种情况下,您不能静态定义架构。

    【讨论】:

      【解决方案3】:

      我同意第一位回答者的观点,即您只需编写一点代码即可获得非常好的人机+计算机可读的 XML 表示。

      早在 2002 年,我就采用了同样的方法来创建 XML/PDF/HTML/XHTML/XLS 报告工具的中间件业务对象。只需几个小时就可以将业务对象编程为 XML 转换器。我利用了对象不是自引用的事实。否则,我将不得不添加引用元素,而不仅仅是将值展平。

      如果您使用 Java 5 或更高版本,还有WebRowSet 技术。我不能说它的输出看起来非常适合 XSLT 直接使用,但它仍然可用。比典型的 JAXB 输出更可口。

      但是,如果您运行的是 Java 6 或更高版本,现在有一种更酷的方法。

      如果您使用的是 JDBC 4,您可以指定一个带有通用类型参数的 Dataset,用于标识类,JDBC 将使用数据填充该类的字段。这是技巧的前半部分。详情请见JDBC Annotations

      技巧的后半部分是使用 XStream 将这些集合转换为 XML。 XStream 通常在第一次就可以得到很好的结果。

      您可以使supplying XStream with some aliases 生成的 XML 非常干净、可读、简洁(即“紧凑”)以供使用。如果这不起作用,还有很多其他方法Tweaking the Output

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-12-06
        • 2019-01-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-07-21
        相关资源
        最近更新 更多