Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/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 如何使用JAXB编写深层XML文档?_Java_Xml_Jaxb_Marshalling - Fatal编程技术网

Java 如何使用JAXB编写深层XML文档?

Java 如何使用JAXB编写深层XML文档?,java,xml,jaxb,marshalling,Java,Xml,Jaxb,Marshalling,我正在尝试创建一个XML文档,它的结构比我见过的其他示例更复杂。以下是我的尝试,使用三个类: Band类,标识图像上的垂直颜色带。现在,它只有一个X值,在图像上 一个程序类,“程序”表示某种图像的模板。它具有图像上的波段数、程序名称和波段对象列表 包含程序列表的ProgramList类 波段类别代码: 程序类代码: 它编译正常,运行无异常。但XML文档如下所示: <?xml version="1.0" encoding="UTF-8" stand

我正在尝试创建一个XML文档,它的结构比我见过的其他示例更复杂。以下是我的尝试,使用三个类:

  • Band类,标识图像上的垂直颜色带。现在,它只有一个X值,在图像上
  • 一个程序类,“程序”表示某种图像的模板。它具有图像上的波段数、程序名称和波段对象列表
  • 包含程序列表的ProgramList类
波段类别代码: 程序类代码: 它编译正常,运行无异常。但XML文档如下所示:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ProgramList/>

相同的结果。

以下内容不是构造函数,因为它具有
void
返回类型。它只是一个与构造函数同名的方法。这意味着运行此逻辑不是为了填充对象模型

public void ProgramList()   {
     Program program1 = new Program();
     program1.setNumBands(2);
     program1.setProgramName("Program 1");
     programlist.add(program1);

     Program program2 = new Program();
     program2.setNumBands(2);
     program2.setProgramName("Program 2");
     programlist.add(program2);        
  }
应该是:

public ProgramList()   {
     programlist = new ArrayList<Program>(2);

     Program program1 = new Program();
     program1.setNumBands(2);
     program1.setProgramName("Program 1");
     programlist.add(program1);

     Program program2 = new Program();
     program2.setNumBands(2);
     program2.setProgramName("Program 2");
     programlist.add(program2);        
}
publicprogramlist(){
programlist=新的ArrayList(2);
程序1=新程序();
程序1.设置编号(2);
program1.setProgramName(“program1”);
programlist.add(program1);
Program program2=新程序();
程序2.SetNumands(2);
program2.setProgramName(“program2”);
programlist.add(program2);
}
注意:因为JAXB是异常配置,所以您添加了很多不必要的注释。以下内容应该会有所帮助:


    • 以下内容不是构造函数,因为它具有
      void
      返回类型。它只是一个与构造函数同名的方法。这意味着运行此逻辑不是为了填充对象模型

      public void ProgramList()   {
           Program program1 = new Program();
           program1.setNumBands(2);
           program1.setProgramName("Program 1");
           programlist.add(program1);
      
           Program program2 = new Program();
           program2.setNumBands(2);
           program2.setProgramName("Program 2");
           programlist.add(program2);        
        }
      
      应该是:

      public ProgramList()   {
           programlist = new ArrayList<Program>(2);
      
           Program program1 = new Program();
           program1.setNumBands(2);
           program1.setProgramName("Program 1");
           programlist.add(program1);
      
           Program program2 = new Program();
           program2.setNumBands(2);
           program2.setProgramName("Program 2");
           programlist.add(program2);        
      }
      
      publicprogramlist(){
      programlist=新的ArrayList(2);
      程序1=新程序();
      程序1.设置编号(2);
      program1.setProgramName(“program1”);
      programlist.add(program1);
      Program program2=新程序();
      程序2.SetNumands(2);
      program2.setProgramName(“program2”);
      programlist.add(program2);
      }
      
      注意:因为JAXB是异常配置,所以您添加了很多不必要的注释。以下内容应该会有所帮助:


      谢谢。这和你的博客文章正是我需要的。谢谢。这篇文章和你的博客文章正是我需要的。
      JAXBContext context = JAXBContext.newInstance(new Class[] {ProgramList.class, Program.class, Band.class});
      
      public void ProgramList()   {
           Program program1 = new Program();
           program1.setNumBands(2);
           program1.setProgramName("Program 1");
           programlist.add(program1);
      
           Program program2 = new Program();
           program2.setNumBands(2);
           program2.setProgramName("Program 2");
           programlist.add(program2);        
        }
      
      public ProgramList()   {
           programlist = new ArrayList<Program>(2);
      
           Program program1 = new Program();
           program1.setNumBands(2);
           program1.setProgramName("Program 1");
           programlist.add(program1);
      
           Program program2 = new Program();
           program2.setNumBands(2);
           program2.setProgramName("Program 2");
           programlist.add(program2);        
      }