从JDBC结果集中获取XML的最佳方法

时间:2009-01-08 20:22:47

标签: java xml jdbc

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

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

3 个答案:

答案 0 :(得分:2)

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

这是一篇关于WebRowSet using Oracle的好文章,可以满足您的需求,我猜。

答案 1 :(得分:1)

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

您的两个选项是要么采用常量格式:

<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>

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

答案 2 :(得分:1)

我同意第一个受访者的意见,即只需编写一些代码即可获得非常好的人类+计算机可读XML表示。

我在2002年采用了相同的方法来创建XML / PDF / HTML / XHTML / XLS报告工具的中间件业务对象。将业务对象编程为XML转换器只需要几个小时。我利用了这些物体不是自我指涉的事实。 Otherwiise,我不得不添加引用元素,而不仅仅是将值展平。

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

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

如果您使用的是JDBC 4,则可以使用标识该类的泛型类型参数指定数据集,JDBC将使用该数据填充该类的字段。这是技巧的前半部分。有关详细信息,请参阅JDBC Annotations

技巧的后半部分是使用XStream将这些集合转换为XML。 XStream通常在第一次给出一个好的结果。

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

相关问题