2009-01-08 68 views
4

我正在尋找從JDBC結果集中獲取XML文檔的最佳方法。 XML的結構不是非常重要,但它應該相當迅速。從JDBC結果集中獲取XML的最佳方法

爲了更清楚起見,我希望結果集中的數據和唯一足夠的元數據來標識數據(本質上是字段名稱)。我目前正在使用MySQL,DB2,SQL Server,但解決方案需要與數據庫無關(對於SQL Server中的XML不是一個可行的選項)。

+0

[Here](http://www.java2s.com/Code/Java/Database-SQL-JDBC/ConvertaResultSettoXML.htm)你可以找到一個很好的解決方案。 – 2012-01-29 03:22:00

回答

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> 

在第二種情況下,你不能靜態地定義模式。

1

我同意第一個答覆者的觀點,即你可以得到非常好的人類+計算機可讀的XML表示,只是寫一點代碼。

我在2002年採用了相同的方法來創建XML/PDF/HTML/XHTML/XLS報告工具的中間件業務對象。只需花費幾個小時將業務對象編程到XML轉換器。我利用了這樣的事實,即物體不是自我指涉的。另外,我不得不添加引用元素,而不是將這些值扁平化。

如果您使用Java 5或更高版本,還有WebRowSet技術。我不能說它的輸出看起來超級吸引力直接由XSLT消費,但它仍然可用。比典型的JAXB輸出更可口。

但是,現在如果運行Java 6或更高版本,現在有一個更酷的方法。

如果您使用的是JDBC 4,則可以使用標識該類的泛型類型參數指定數據集,並且JDBC將使用該數據填充該類的字段。這是訣竅的前半部分。有關詳細信息,

的伎倆下半年是使用XStream把這些集合轉換成XML見JDBC Annotations。 XStream通常第一次會給出好的結果。

可以使XML產生非常乾淨,可讀性強,簡潔(即「緊」)由supplying XStream with some aliases使用。如果這不起作用,Tweaking the Output還有很多其他的方法。

2

通過使用WebRowSet,一次可以將整個ResultSet轉換爲XML。 WebRowSet生成的XML非常清晰和簡單,我不確定速度,因爲它也取決於驅動程序的實現。

這是一篇關於WebRowSet using Oracle的好文章,這將滿足您的需求,我猜。

相關問題