2011-02-11 65 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