一、简单介绍 Xstream是一款简单易用的Xml<->对象的java jar包。可以轻易的将Java对象和xml文档相互转换,而且可以修改某个特定的属性和节点名称,而且也支持json的转换; 可以使java程序员在操作Xml、java对象相互转换中避免许多繁杂的工作,提高开发 者的开发效率。并能在项目开发中提供有效的解决方案,比如动态配置等。二、必要的Jar包 <a target=_blank href="http://vdisk.weibo.com/s/aTPuwbvX4w8AR" target="_blank">xstream-1.4.2.jar</a><a target=_blank href=""https://dl.pandaidea.com/jarfiles/x/xpp3/xpp3.jar.zip">xpp3.jar</a>三、Xstream的使用 3.1初始化和实例化public void init() {
try {
xstream = new XStream();
//xstream = new XStream(new DomDriver()); // 需要xpp3 jar
} catch (Exception e) {
e.printStackTrace();
}
}
3.2 java bean->xml
public String writeToXml(Object bean){
return xstream.toXML(bean);
}
在main函数中如下执行
XtreamTest test=new XtreamTest();
test.init();
Student student =new Student();
student.setName("Jane");
student.setAge(12);
student.setGrade(new Grade("1004班", "李老師"));
System.out.print(test.writeToXml(student));
控制台输出如下
<Student>
<name>Jane</name>
<age>12</age>
<grade>
<name>1004班</name>
<teacherName>李老師</teacherName>
</grade>
</Student>3.2 list->xml
在main函数中如下执行
Student student =new Student();
student.setName("Jane");
student.setAge(12);
student.setGrade(new Grade("1004班", "李老師"));
System.out.print(test.writeToXml(student));
Student student2 =new Student();
student2.setName("Tom");
student2.setAge(13);
student2.setGrade(new Grade("1003班","王老師"));
List<Student> list=new ArrayList<Student>();
list.add(student);
list.add(student2);
System.out.print(test.writeToXml(list));控制台输出
<list>
<student>
<name>Jane</name>
<age>12</age>
<grade>
<name>1004班</name>
<teacherName>李老師</teacherName>
</grade>
</student>
<student>
<name>Tom</name>
<age>13</age>
<grade>
<name>1003班</name>
<teacherName>王老師</teacherName>
</grade>
</student>
</list>3.3 map->xml
Student student =new Student();
student.setName("Jane");
student.setAge(12);
student.setGrade(new Grade("1004班", "李老師"));
System.out.println(test.writeToXml(student));
Student student2 =new Student();
student2.setName("Tom");
student2.setAge(13);
student2.setGrade(new Grade("1003班","王老師"));
Map<String, Student> map = new HashMap<String, Student>();
map.put("first",student);
map.put("second",student2);
System.out.println(test.writeToXml(map));控制台输出
<map>
<entry>
<key>second</key>
<student>
<name>Tom</name>
<age>13</age>
<grade>
<name>1003班</name>
<teacherName>王老師</teacherName>
</grade>
</student>
</entry>
<entry>
<key>first</key>
<student>
<name>Jane</name>
<age>12</age>
<grade>
<name>1004班</name>
<teacherName>李老師</teacherName>
</grade>
</student>
</entry>
</map>4.完整代码
public class XtreamTest {
private XStream xstream = null;
private ObjectOutputStream out = null;
private ObjectInputStream in = null;
public void init() {
try {
xstream = new XStream();
//xstream = new XStream(new DomDriver()); // 需要xpp3 jar
/xstream.alias("key",String.class);
xstream.alias("student", Student.class);
xstream.alias("grade", Grade.class);
} catch (Exception e) {
e.printStackTrace();
}
}
public String writeToXml(Object bean){
return xstream.toXML(bean);
}
public String writeXmlToFile(Object bean ,String filename){
if(bean instanceof Map){
try{
PrintWriter pw=new PrintWriter(filename,"utf-8");
xstream.toXML(bean,pw);
}catch (UnsupportedEncodingException e){
}catch (FileNotFoundException e){
}
}
return filename;
}
public Object readMapFromFile(String filename){
try { InputStream in=new FileInputStream(new File(filename));
Object bean=xstream.fromXML(in);
return bean;
} catch (FileNotFoundException e){
e.printStackTrace();
}
return null;
}
public static void main(String args[]){
Student student =new Student();
student.setName("Jane");
student.setAge(12);
student.setGrade(new Grade("1004班", "李老師"));
System.out.println(test.writeToXml(student));
Student student2 =new Student();
student2.setName("Tom");
student2.setAge(13);
student2.setGrade(new Grade("1003班","王老師"));
List<Student> list=new ArrayList<Student>();
list.add(student);
list.add(student2);
System.out.println(test.writeToXml(list));
Map<String, Student> map = new HashMap<String, Student>();
map.put("first",student);
map.put("second",student2);
System.out.println(test.writeToXml(map));
}
}

1373

被折叠的 条评论
为什么被折叠?



