XStream集合的转换

Asura211 2015-04-20 03:15:20
先上代码,再说问题
public class Test {

public static void main(String[] args) {
Student s1 = new Student();
Student s2 = new Student();
s1.setName("xiaoMing");
s2.setName("xiaoHong");
s1.setNo("001");
s2.setNo("002");
List<Student> list = new ArrayList<Student>();
list.add(s1);
list.add(s2);
Teacher teacher = new Teacher();
teacher.setName("WangLaoshi");
teacher.setStudent(list);

XStream xs = new XStream();
xs.alias("student", Student.class);
xs.alias("teacher", Teacher.class);
xs.addImplicitCollection(Teacher.class, "students");
//转换成XML
String xml = xs.toXML(teacher);
System.out.println(xml);
//再转换成对象,students为空,输出结果报空指针异常
Teacher t2 = (Teacher) xs.fromXML(xml);
System.out.println(t2.getStudents().size());
}

}

class Teacher{

private String name;
private List<Student> students;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public List<Student> getStudents() {
return students;
}
public void setStudent(List<Student> students) {
this.students = students;
}
}

class Student{

private String name;
private String no;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getNo() {
return no;
}
public void setNo(String no) {
this.no = no;
}

}

如上代码所示,我利用addImplicitCollection(Teacher.class, "students")将<students>标签给去掉了,xml输出结果为
<teacher>
<name>WangLaoshi</name>
<student>
<name>xiaoMing</name>
<no>001</no>
</student>
<student>
<name>xiaoHong</name>
<no>002</no>
</student>
</teacher>

但是当我想要将此xml再转换成java对象时,却发现得到的Teacher对象中的students为空,转换失败了,请问这是为何?
...全文
184 1 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
Asura211 2015-04-20
  • 打赏
  • 举报
回复
没人回答么?困扰我两天了。。。

67,549

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧