Java 添加两个列表并以嵌套形式获取XML输出

Java 添加两个列表并以嵌套形式获取XML输出,java,xml,list,object,jax-rs,Java,Xml,List,Object,Jax Rs,我有两个对象和应用程序环境列表。我正在添加这些列表,但我得到的输出是一个完整的应用程序列表,而不是另一个完整的环境列表 List<ApplicationWithEnvironments > AppWithEnvlist = new ArrayList<ApplicationWithEnvironments >(); for(ApplicationDTO d: allApplication) { ApplicationWit

我有两个对象和应用程序环境列表。我正在添加这些列表,但我得到的输出是一个完整的应用程序列表,而不是另一个完整的环境列表

    List<ApplicationWithEnvironments > AppWithEnvlist = new ArrayList<ApplicationWithEnvironments >();        

    for(ApplicationDTO d: allApplication) {
        ApplicationWithEnvironments appWithEnv = new ApplicationWithEnvironments();

        Application a = new Application();

        a.set...

        appWithEnv.setApplication(a);


        for(EnvironmentDTO en: d.getEnvironment())
        {
            Environment e = new Environment();
            e.set...
            appWithEnv.addEnvironment(e);
        }

        AppWithEnvList.add(appWithEnv);
    }

    ArrayList<MyModel> obj= new ArrayList<MyModel>();
    MyModel mm = new MyModel();
    mm.setAppWithEnvList(AppWithEnvList);
    obj.add(mm);
    return obj; 
我希望它以嵌套形式出现,例如一个条目用于应用程序和环境,而不是第二行用于应用程序和环境,等等

这是我的代码:

@GET
@Path("/test")
@Produces({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
public ArrayList<MyModel> Test(){

    System.out.println("inside test");

    List<ApplicationDTO> allApplication = applicationService.getAllApplication();

    List<Application> Applist = new ArrayList<Application>();
    List<Environment> Envlist = new ArrayList<Environment>();

    for(ApplicationDTO d: allApplication)
    {
        Application a = new Application();

        a.setApplicationDescription(d.getApplicationDescription());
        a.setApplicationId(d.getApplicationId());
        a.setApplicationName(d.getApplicationName());
        a.setAssignedTo(d.getAssignedTo());
        a.setCreatedBy(d.getCreatedBy());
        a.setCreateTime(d.getCreateTime());
        a.setModifiedTime(d.getModifiedTime());
        a.setOwner(d.getOwner());

        Environment e = new Environment();

        for(EnvironmentDTO en: d.getEnvironment())
        {
            e.setEnvironmentId(en.getEnvironmentId());
            e.setEnvironmentName(en.getEnvironmentName());
            e.setOwner(en.getOwner());
            e.setCreateTime(en.getCreateTime());

            Envlist.add(e);
        }

        Applist.add(a);
    }

    ArrayList<MyModel> obj= new ArrayList<MyModel>();
    MyModel mm = new MyModel();
    mm.setAppDTO(Applist);
    mm.setEnDTO(Envlist);
    obj.add(mm);
    return obj; 
    }
@GET
@路径(“/test”)
@产生({MediaType.APPLICATION_JSON,MediaType.APPLICATION_XML})
公共数组列表测试(){
系统输出打印(“内部测试”);
List allApplication=applicationService.getAllApplication();
List Applist=new ArrayList();
List Envlist=new ArrayList();
适用于(适用于d:所有应用)
{
应用程序a=新应用程序();
a、 setApplicationDescription(d.getApplicationDescription());
a、 setApplicationId(d.getApplicationId());
a、 setApplicationName(d.getApplicationName());
a、 setAssignedTo(d.getAssignedTo());
a、 setCreatedBy(d.getCreatedBy());
a、 setCreateTime(d.getCreateTime());
a、 setModifiedTime(d.getModifiedTime());
a、 setOwner(d.getOwner());
环境e=新环境();
for(EnvironmentDTO en:d.getEnvironment())
{
e、 setEnvironmentId(en.getEnvironmentId());
e、 setEnvironmentName(en.getEnvironmentName());
e、 setOwner(en.getOwner());
e、 setCreateTime(en.getCreateTime());
增列(e);
}
添加(a);
}
ArrayList obj=新的ArrayList();
MyModel mm=新的MyModel();
mm.setAppDTO(应用列表);
mm.setEnDTO(环境列表);
对象添加(mm);
返回obj;
}
编辑

我更改了我的类,在应用程序中添加了环境列表,现在我得到了应用程序中所有环境的列表,但我需要一个应用程序中的一个环境,下一个应用程序中的另一个环境,依此类推。我错过了什么

    public List<Application> Test(){

    System.out.println("inside test");

    List<ApplicationDTO> allApplication = applicationService.getAllApplication();

    List<Application> Applist = new ArrayList<Application>();
    List<Environment> Envlist = new ArrayList<Environment>();

    for(ApplicationDTO d: allApplication)
    {           
        Application a = new Application();

        a.setApplicationDescription(d.getApplicationDescription());
        a.setApplicationId(d.getApplicationId());
        a.setApplicationName(d.getApplicationName());
        a.setAssignedTo(d.getAssignedTo());
        a.setCreatedBy(d.getCreatedBy());
        a.setCreateTime(d.getCreateTime());
        a.setModifiedTime(d.getModifiedTime());
        a.setOwner(d.getOwner());

        for(EnvironmentDTO en: d.getEnvironment())
        {
            Environment e = new Environment();

            e.setEnvironmentId(en.getEnvironmentId());
            e.setEnvironmentName(en.getEnvironmentName());
            e.setOwner(en.getOwner());
            e.setCreateTime(en.getCreateTime());
            Envlist.add(e);
        }

        a.setEnvlists(Envlist);         
        Applist.add(a);
    }
    return Applist;
公共列表测试(){
系统输出打印(“内部测试”);
List allApplication=applicationService.getAllApplication();
List Applist=new ArrayList();
List Envlist=new ArrayList();
适用于(适用于d:所有应用)
{           
应用程序a=新应用程序();
a、 setApplicationDescription(d.getApplicationDescription());
a、 setApplicationId(d.getApplicationId());
a、 setApplicationName(d.getApplicationName());
a、 setAssignedTo(d.getAssignedTo());
a、 setCreatedBy(d.getCreatedBy());
a、 setCreateTime(d.getCreateTime());
a、 setModifiedTime(d.getModifiedTime());
a、 setOwner(d.getOwner());
for(EnvironmentDTO en:d.getEnvironment())
{
环境e=新环境();
e、 setEnvironmentId(en.getEnvironmentId());
e、 setEnvironmentName(en.getEnvironmentName());
e、 setOwner(en.getOwner());
e、 setCreateTime(en.getCreateTime());
增列(e);
}
a、 setEnvlists(Envlist);
添加(a);
}
返回应用程序列表;

您应该创建一个包含应用程序和环境列表的对象,如ApplicationWithEnvironments

    List<ApplicationWithEnvironments > AppWithEnvlist = new ArrayList<ApplicationWithEnvironments >();        

    for(ApplicationDTO d: allApplication) {
        ApplicationWithEnvironments appWithEnv = new ApplicationWithEnvironments();

        Application a = new Application();

        a.set...

        appWithEnv.setApplication(a);


        for(EnvironmentDTO en: d.getEnvironment())
        {
            Environment e = new Environment();
            e.set...
            appWithEnv.addEnvironment(e);
        }

        AppWithEnvList.add(appWithEnv);
    }

    ArrayList<MyModel> obj= new ArrayList<MyModel>();
    MyModel mm = new MyModel();
    mm.setAppWithEnvList(AppWithEnvList);
    obj.add(mm);
    return obj; 
List-AppWithEnvlist=new-ArrayList();
适用于(适用于d:所有应用){
ApplicationWithEnvironments appWithEnv=新的ApplicationWithEnvironments();
应用程序a=新应用程序();
a、 设置。。。
appWithEnv.setApplication(a);
for(EnvironmentDTO en:d.getEnvironment())
{
环境e=新环境();
e、 设置。。。
附件环境附录(e);
}
AppWithEnvList.add(appWithEnv);
}
ArrayList obj=新的ArrayList();
MyModel mm=新的MyModel();
mm.设置AppWithEnvList(AppWithEnvList);
对象添加(mm);
返回obj;

或者您的应用程序对象中可以有一个环境列表,这样您就不再需要新的ApplicationWithEnvironments对象了。

您是否生成了XSD并对其应用了JAXB?是否应该
Environment e=new Environment();
在for循环
for中(EnvironmentDTO en:
?另外,您没有在
应用程序
对象中的任何位置设置
environlist
。@Shashank:我认为这将是他的问题的解决方案。设置a.setEnvironment(en);在Applist.add(a)之前;@ShashankKadne不,我在应用程序dto中没有envlist。我在应用程序和环境中有两个不同的dto类。我将发布我的类,看一看。请看一下编辑并告诉我缺少什么?我应该在类ApplicationWithEnvironments中有什么?我在该类中有两个列表,即List和List吗或者其他一些属性?您将有1个应用程序属性和1个列表属性。请查看编辑并告诉我缺少什么?