如何以特定格式序列化/反序列化



我有一个对象图的xml序列化版本,想了解它是以何种方式序列化的,这样我就可以添加具有兼容格式的类似内容。我不知道哪个库/选项允许这种格式的

public class MyRoot{
public List<MyMember> members {get;set;}
public List<Foo> foos {get;set;}
public List<Bar> bars {get;set;}
} 

我需要得到的xml是

<MyRoot>
<members>...</members>
<members>...</members>
<members>...</members>
<foos>...</foos>
<foos>...</foos>
<foos>...</foos>
<foos>...</foos>
<bars>...</bars>
<bars>...</bars>
<bars>...</bars>
<bars>...</bars>
</MyRoot> 

就像Ryan和Jackson所建议的那样。尝试了Ryan的建议。

MyRoot类:

@XmlRootElement(name = "MyRoot")
public class MyRoot {
private List<MyMember> members;
private List<Foo> foos;
private List<Bar> bars;
@XmlElement(name = "members")
public List<MyMember> getMembers() {
return members;
}
public void setMembers(List<MyMember> members) {
this.members = members;
}
@XmlElement(name = "foos")
public List<Foo> getFoos() {
return foos;
}
public void setFoos(List<Foo> foos) {
this.foos = foos;
}
@XmlElement(name = "bars")
public List<Bar> getBars() {
return bars;
}
public void setBars(List<Bar> bars) {
this.bars = bars;
}
}

Foo类Bar类yMember类代码相同:

@XmlRootElement
class Foo {
private String content;
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
}

主要方法的测试类:

public class Test {
public static void main(String[] args) throws JAXBException {
Bar bar = new Bar();
bar.setContent("bar");
Foo foo = new Foo();
foo.setContent("");
MyMember mymember = new MyMember();
mymember.setContent("mymember");

MyRoot root = new MyRoot();
root.setBars(Arrays.asList(new Bar(), bar));
root.setFoos(Arrays.asList(foo));
root.setMembers(Arrays.asList(mymember));
File file = new File("root.xml");
JAXB.marshal(root, file);
}
}

如果使用Eclipse,请使用F5刷新Explorer以查看新文件root.xml:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<MyRoot>
<bars/>
<bars>
<content>bar</content>
</bars>
<foos>
<content></content>
</foos>
<members>
<content>mymember</content>
</members>
</MyRoot>

最新更新