Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/374.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.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

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 使用JAXB和多个相同的子元素构造XML_Java_Xml_Xsd_Jaxb - Fatal编程技术网

Java 使用JAXB和多个相同的子元素构造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

我已经基于模式文件构建了一个Java类,现在我正在构建一个程序,以基于生成的类及其下的模式构建一个实际的XML文件。有一部分允许使用多个子元素,例如:

<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);