2010-03-01 147 views
0

我想从一个复杂的结果集中创建一个XML文档,即具有多个连接的结果集,所以竞争中有一堆问题,而且问题有一堆答案。用Dom4j映射复杂的结果集

那么该文件将最终看起来像:

<competitions> 
    <competition id="12"> 
    <question id="3"> 
     <answer id="34"> 
     The answer 
     </answer> 
     <answer id="35"> 
     The answer 
     </answer> 
     <answer id="36"> 
     The answer 
     </answer> 
    </question> 
... 

很多像SQL Server中的“为XML”命令,但我不能使用数据库做加工,所以它需要在Java中。任何人都可以指向我正确的方向去任何优秀的资源,甚至是开源的库,这样做/类似的事情,所以我可以做我想要的东西吗?谢谢。

回答

0

我不明白你的问题“在Java中”是什么意思?你是否需要解析这个XML(使用Dom4J),你是否想从中生成Java对象(使用JAXB,或Xstream或任何其他XML绑定库),还是需要编写此XML?

+0

“在Java中”意味着我不能使用数据库我必须使用Java来完成处理。我需要从返回的结果集中创建XML,我知道如何手动创建文档和元素等,但当涉及到嵌套元素时,我正在挣扎,就像我给出的XML示例。 – marktucks 2010-03-01 13:23:27

0

一个相当容易的事情就是先将结果集转换为Competitions对象,然后再将对象转换为xml(使用xstream或某些此类框架)。

您是否可以将结果集转换为竞赛对象? (或者你想在这方面的帮助,以及?)

class Competitions { 
    List<Competition> getCompetitions(); 
} 

class Competition { 
    Integer getId(); 
    Question getQuestion(); 
} 

class Question { 
    Integer getId(); 
    Answer getAnswer(); 
} 

class Answer { 
    String getText(); 
} 
0

平静风暴的建议,我将我的结果集为对象树,并创建了一个抽象类的自定义toxml方法,尽管它遍历每个方法对象并从它们创建XML元素和属性。

我只是不能相信没有一个更简单的开源解决方案,这将自动完成这一切!也许我只是懒惰:)

+0

您好从结果集中创建一个Java对象,您可以使用Hibernate(这是一个ORM解决方案)。 Hibernate也可以选择XML导出。但是加入结果集有点棘手。 – 2010-03-03 16:53:07