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