这个xml有一个完整列表的包装:
<?xml version="1.0" encoding="UTF-8"?>
<root>
<listWrapper>
<box>
<number>1</number>
</box>
<box>
<number>2</number>
</box>
<box>
<number>3</number>
</box>
</listWrapper>
</root>
我们可以这样读:
@XmlElementWrapper(name = "listWrapper")
@XmlElement(name = "box")
List<Box> boxList;
并用“box”作为根元素描述Box类
但是如果我把每个盒子包裹起来而不是所有的话,我怎么能制作相同的列表呢?
<?xml version="1.0" encoding="UTF-8"?>
<root>
<wrapper>
<box>
<number>1</number>
</box>
</wrapper>
<wrapper>
<box>
<number>2</number>
</box>
</wrapper>
<wrapper>
<box>
<number>3</number>
</box>
</wrapper>
</root>
最后我想列出没有包装级别的盒子。
答案 0 :(得分:0)
根类(测试映射的主要方法):
import java.util.ArrayList;
import java.util.List;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.Marshaller;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
@XmlRootElement
public class Root {
private List<Wrapper> wrappers = new ArrayList<Wrapper>();
public Root(){
}
public static void main(String[] args) throws Exception {
JAXBContext jc = JAXBContext.newInstance(Root.class);
Root root = new Root();
Wrapper wrapper1 = new Wrapper(new Box(1));
root.getWrappers().add(wrapper1);
Wrapper wrapper2 = new Wrapper(new Box(2));
root.getWrappers().add(wrapper2);
Wrapper wrapper3 = new Wrapper(new Box(3));
root.getWrappers().add(wrapper3);
Marshaller marshaller = jc.createMarshaller();
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
marshaller.marshal(root, System.out);
}
@XmlElement(name = "wrapper")
public List<Wrapper> getWrappers() {
return wrappers;
}
public void setWrappers(List<Wrapper> wrappers) {
this.wrappers = wrappers;
}
}
包含Box的包装类:
import javax.xml.bind.annotation.XmlRootElement;
@XmlRootElement
public class Wrapper {
private Box box;
public Wrapper(){
}
public Wrapper(Box box){
this.box = box;
}
public Box getBox() {
return box;
}
public void setBox(Box box) {
this.box = box;
}
}
最后,Box类:
import javax.xml.bind.annotation.XmlRootElement;
@XmlRootElement
public class Box {
private Integer number;
public Box(){
}
public Box(Integer number){
this.number = number;
}
public Integer getNumber() {
return number;
}
public void setNumber(Integer number) {
this.number = number;
}
}