2011-02-11 58 views
0

這是查詢:如何將查詢結果一般地映射到生成的XML?

Select id, title, value, old_title, old_value, new_title, new_value FROM VALUES 

這個XML:

<row> 
    <id> 
    <title> 
    <value> 
    <old_state> 
    <title> 
    <value> 
    </old_state> 
    <new_state> 
    <title> 
    <value> 
    </new_state> 
<row> 

我這樣做是對現有XML的方式是,我沒有new_state/old_state這樣我就可以使用結果,例如。 String colName = meta.getColumnLabel(i + 1);,並且不需要將old_title映射到title。現在我有想到的唯一的事情就是做一個圖,其中的關鍵將是計數器的值和值將是新元素的名稱,這樣

boolean columnNameIsStartElement = (columStartNames.get(i) != null)?true=false; 
boolean columnNameIsEndElement = (columEndNames.get(i) != null)?true=false; 
if (columnNameIsStartElement){ 
    writer.writeStartElement(columStartNames.get(i)) 
} else if (columnNameIsEndElement){ 
    writer.writeEndElement(columStartNames.get(i)) 
} 
//continue processing the element as usual 

但我不喜歡它。我更喜歡以某種方式使用XSD,因此解決方案更通用,並且不需要我計算元素的行數,以便我可以正確映射它們(更不用說我會在兒童元素具有額外的孩子,我怎麼可以映射?:))

回答

0

看看XStream,它允許輕鬆做這種映射。


編輯:好了,如果你是嚴格的輸出格式,你不希望中間對象,那麼你可以考慮使用速度。您只需從示例輸出中編寫一個小模板,然後在其上下文中調用將您的ResultSet傳遞給它的速度。

+0

看起來不錯,但我從結果集寫入XML,沒有對象之間,因爲我認爲這會創建額外的負載。 – Andrija 2011-02-11 11:54:52