使用JAXB和多个相同的子元素

时间:2017-03-01 07:52:50

标签: java xml xsd jaxb

我已经基于模式文件构建了一个Java类,现在我正在构建一个程序来根据生成的类和它下面的模式构建一个实际的XML文件。有一个部分允许多个子元素,例如:

<entry>
    <methods>
        <method type="walking"/>
        <method type="running"/>
        <method type="cycling"/>
    </methods>
</entry>

输入<method>元素需要用户输入,直到给出-结束列表。但是,当我收集要添加到列表的输入时,列表中只包含我给出的最后一个方法,例如:

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>

这是我收集方法的代码:

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

根据我的理解,add(method)应该在列表的末尾添加一个新条目,但它似乎在某种程度上取代了最后一个条目。即使这个问题可能非常简单,我也会围绕这个问题走路。我会在这里粘贴类,如果需要解决问题,但是,是的,我对Java / JAXB很新 - 是的,这与学校项目有关,所以如果提出的设置很奇怪,我会道歉奇怪地解释道。

1 个答案:

答案 0 :(得分:1)

我认为问题在于您每次迭代都会覆盖该方法。尝试移动此行:entry.methods.method method = new entry.methods.method(); 在循环中。