アップデート
persons
ルート要素ではなくグループ化要素として参照している場合、 JAXB(JSR-222)実装はデフォルトでグループ化要素を追加しません。
グループ(グループ化要素なし)
package forum13305973;
import java.util.*;
import javax.xml.bind.annotation.*;
@XmlRootElement
public class Group {
//many other fields
@XmlElement(name="person")
public List<Person> persons = new ArrayList<Person>();
}
人
package forum13305973;
public class Person {
public String name;
}
デモ
package forum13305973;
import javax.xml.bind.*;
public class Demo {
public static void main(String[] args) throws Exception {
JAXBContext jc = JAXBContext.newInstance(Group.class);
Group group = new Group();
Person person1 = new Person();
person1.name = "Jane";
group.persons.add(person1);
Person person2 = new Person();
person2.name = "John";
group.persons.add(person2);
Marshaller marshaller = jc.createMarshaller();
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
marshaller.marshal(group, System.out);
}
}
出力
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<group>
<person>
<name>Jane</name>
</person>
<person>
<name>John</name>
</person>
</group>
グループ(グループ化要素あり)
@XmlElementWrapper
グループ化要素を取得するには、注釈を追加する必要があります
package forum13305973;
import java.util.*;
import javax.xml.bind.annotation.*;
@XmlRootElement
public class Group {
//many other fields
@XmlElementWrapper
@XmlElement(name="person")
public List<Person> persons = new ArrayList<Person>();
}
出力(グループ化要素あり)
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<group>
<persons>
<person>
<name>Jane</name>
</person>
<person>
<name>John</name>
</person>
</persons>
</group>
元の回答
次のことができます。
JAXBContext jc = JAXBContext.newInstance(Person.class);
Marshaller marshaller = jc.createMarshaller();
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true); // format output
marshaller.setProperty(Marshaller.JAXB_FRAGMENT, true); // remove header
for(Person person : group.persons) {
marshaller.marshal(person, System.out);
}