Java 使用JAXB和多个相同的子元素构造XML
我已经基于模式文件构建了一个Java类,现在我正在构建一个程序,以基于生成的类及其下的模式构建一个实际的XML文件。有一部分允许使用多个子元素,例如:Java 使用JAXB和多个相同的子元素构造XML,java,xml,xsd,jaxb,Java,Xml,Xsd,Jaxb,我已经基于模式文件构建了一个Java类,现在我正在构建一个程序,以基于生成的类及其下的模式构建一个实际的XML文件。有一部分允许使用多个子元素,例如: <entry> <methods> <method type="walking"/> <method type="running"/> <method type="cycling"/> </methods> &l
<entry>
<methods>
<method type="walking"/>
<method type="running"/>
<method type="cycling"/>
</methods>
</entry>
Enter a method (- to finish): walking
Enter a method (- to finish): running
Enter a method (- to finish): cycling
Enter a method (- to finish): -
结果如下:
<methods>
<method type="cycling"/>
<method type="cycling"/>
<method type="cycling"/>
</methods>
据我所知,
add(method)
应该在列表末尾添加一个新条目,但它似乎以某种方式将所有给定条目替换为最后一个条目。我在这个问题上绕圈子,尽管问题可能很简单。如果需要解决这个问题,我会将这些类粘贴在这里,但是,是的,我对Java/JAXB非常陌生-是的,这与学校的一个项目有关,所以如果出现设置奇怪或解释奇怪的情况,我表示歉意。我认为问题在于每次迭代都会覆盖该方法。尝试移动此行:entry.methods.method=new entry.methods.method()代码>
在循环内部。这就解决了它!我猜想问题就这么简单,但看不出这是问题所在。
Scanner input = new Scanner(System.in);
entry.methods methods = new entry.methods();
entry.methods.method method = new entry.methods.method();
while (true) {
System.out.print("Enter a method (- to finish): ");
String given = input.next();
if (given.equals("-")) {
break;
}
method.setType(given);
methods.getMethod().add(method);
}
entry.setMethods(methods);