0
なぜこの例ではバゼのリストが正しくアンマーシャリングされていませんか?例では、ヌルプロパティーを持つArrayList
内の単一のBaz
という結果になります。正しく動作させるには?jaxb unmarshallリストが正常に動作しています
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;
}
}
}
結果が
foo 1 null null
1
よう
@XmlElementWrapper
と何かを使用してラッパーオブジェクトを指定する必要があります。 –