Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 用Dom4j映射复杂结果集_Java_Sql_Sql Server_Xml_Dom4j - Fatal编程技术网

Java 用Dom4j映射复杂结果集

Java 用Dom4j映射复杂结果集,java,sql,sql-server,xml,dom4j,Java,Sql,Sql Server,Xml,Dom4j,我试图从一个复杂的结果集创建一个XML文档,即一个包含多个连接的结果集,因此一个竞赛有一堆问题,一个问题有一堆答案 因此,该文档最终会显示如下内容: <competitions> <competition id="12"> <question id="3"> <answer id="34"> The answer </answer> <answer id="35"&g

我试图从一个复杂的结果集创建一个XML文档,即一个包含多个连接的结果集,因此一个竞赛有一堆问题,一个问题有一堆答案

因此,该文档最终会显示如下内容:

<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中的“for XML”命令,但我不能使用数据库来进行处理,所以它需要使用Java。有没有人能为我指出正确的方向,让我找到任何好的资源,甚至是做这/类似事情的开源库,这样我就可以让它做我想做的事情?谢谢。

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

一件相当简单的事情是首先将结果集转换为对象,然后再将对象转换为XML(使用xstream或类似的框架)

您是否能够将结果集转换为竞赛对象?(或者您也需要这方面的帮助?)

班级竞赛{
列表getCompetitions();
}
班级竞赛{
整数getId();
问题获取问题();
}
课堂提问{
整数getId();
回答getAnswer();
}
课堂答案{
字符串getText();
}

正如Calm Storm所建议的,我将结果集转换为对象树,并在抽象类中创建了一个自定义的toXml方法,该方法遍历每个对象中的方法,并从中创建XML元素和属性


我简直不敢相信没有一个更简单的开源解决方案可以实现这一切!也许我只是懒惰:)

“在Java中”意味着我不能使用数据库,我必须使用Java进行处理。我需要从返回的结果集创建XML,我知道如何手动创建文档和元素等。但是当涉及到嵌套元素时,我很困难,就像我给出的XML示例一样。嗨,要从结果集创建java对象,可以使用Hibernate(这是一个ORM解决方案)。Hibernate还可以选择XML导出。但对于连接的结果集来说,这有点棘手。
class Competitions {
   List<Competition> getCompetitions();
}

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

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

class Answer {
   String getText();
}