0
Pourquoi dans cet exemple la liste de bazes n'est pas unmarshalled correctement? Exemple résultats dans un seul Baz
dans le ArrayList
avec des propriétés null. Comment le faire fonctionner correctement?jaxb unmarshall liste fonctionne maintenant
public class Application {
private final static String FOO_XML = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><FooBar><foo>foo</foo><bar>1</bar>"
+ "<bazes><baz><baz1>baz11</baz1><baz2>baz12</baz2></baz><baz><baz1>baz21</baz1><baz2>baz22</baz2></baz></bazes>"
+ "</FooBar>";
public static void main(String[] args) throws JAXBException {
JAXBContext ctx = JAXBContext.newInstance(FooBar.class);
Unmarshaller u = ctx.createUnmarshaller();
FooBar result = (FooBar) u.unmarshal(new ByteArrayInputStream(FOO_XML.getBytes()));
System.out.println(result);
System.out.println(result.bazes.size());
}
@XmlRootElement(name = "FooBar")
@XmlAccessorType(XmlAccessType.FIELD)
public static class FooBar {
@XmlElement
private String foo;
@XmlElement
private int bar;
@XmlElement(name = "bazes")
public ArrayList<Baz> bazes;
@Override
public String toString() {
StringBuffer sb = new StringBuffer();
sb.append(foo + " ");
sb.append(bar + " ");
for (Baz baz : bazes) {
sb.append(baz.baz1 + " " + baz.baz2 + " ");
}
return sb.toString();
}
@XmlType
@XmlAccessorType(XmlAccessType.FIELD)
public static class Baz {
@XmlElement
private String baz1;
@XmlElement
private String baz2;
}
}
}
Le résultat suit
foo 1 null null
1
Cela fonctionne parfaitement –