Unmarshal XML into arrays Unmarshal XML into arrays xml xml

Unmarshal XML into arrays


You could do the following:

Root

This example would work the same if the field was changed to List<Animal> or ArrayList<Animal>.

package forum13178824;import javax.xml.bind.annotation.*;@XmlRootElement@XmlAccessorType(XmlAccessType.FIELD)public class Root {    @XmlElement(name="animal")    private Animal[] animals;}

Animal

package forum13178824;import javax.xml.bind.annotation.*;@XmlAccessorType(XmlAccessType.FIELD)public class Animal {    private String name;}

Demo

package forum13178824;import java.io.File;import javax.xml.bind.*;public class Demo {    public static void main(String[] args) throws Exception {        JAXBContext jc = JAXBContext.newInstance(Root.class);        Unmarshaller unmarshaller = jc.createUnmarshaller();        File xml = new File("src/forum13178824/input.xml");        Root root = (Root) unmarshaller.unmarshal(xml);        Marshaller marshaller = jc.createMarshaller();        marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);        marshaller.marshal(root, System.out);    }}

input.xml/Output

<?xml version="1.0" encoding="UTF-8" standalone="yes"?><root>    <animal>        <name>barack</name>    </animal>    <animal>        <name>mitt</name>    </animal></root>

For More Information