使用Xstream须要引入xstream-1.4.jar和xpp3-1.1.4c.jar
- import com.thoughtworks.xstream.XStream;
- import com.hikvision.bms.main.Person;
- /**
- * 使用Xstream解析XML字符串
- */
- public class XstreamDemo {
- /**
- * xml字符串解析为实体类对象
- */
- public void str2Java() {
- String str = "<person>"
- + "<name>Jack</name>"
- + "<age>11</age>"
- + "<sex>男</sex>"
- + "<telphone>110</telphone>"
- + "<lovers>parents</lovers>"
- + "<lovers>wife</lovers>"
- + "<friends>"
- + "<string>LiLei</string>"
- + "<string>LuXi</string>"
- + "</friends>"
- + "<roles>"
- + "<string>friend</string>"
- + "<string>father</string>"
- + "<string>doctor</string>" //注意string首字母必须小写
- + "</roles>"
- + "</person>";
- XStream xStream = new XStream();
- xStream.alias("person",Person.class);
- xStream.alias("lovers",String.class); //private List<String> lovers;是string类型
- xStream.addImplicitCollection(Person.class,"lovers");//隐式集合 隐藏lovers
- Person person = (Person) xStream.fromXML(str);
- outPutInfo(person);
- }
- /**
- * 将XML文件解析成实体类对象
- */
- public void str2JavaFormXML() {
- XStream xStream = new XStream();
- xStream.alias("person","lovers");//隐式集合 隐藏lovers
- Person person = (Person)xStream.fromXML(XstreamDemo.class.getResourceAsStream("person.xml"));
- outPutInfo(person);
- }
- /**
- * 实体类转换为xml字符串
- */
- public void java2XmlStr() {
- Person person = new Person();
- person.setName("Lucy");
- person.setAge(22);
- person.setSex("女");
- person.setTelphone("120");
- XStream xStream = new XStream();
- xStream.alias("Girl",Person.class);
- String xmlStr = xStream.toXML(person);
- System.out.println(xmlStr);
- }
- public void outPutInfo(Person person) {
- System.out.println("name:" + person.getName());
- System.out.println("sex:" + person.getSex());
- System.out.println("telphone:" + person.getTelphone());
- for (String lover : person.getLovers()) {
- System.out.print(lover + " ");
- }
- System.out.println();
- for (String friend : person.getFriends()) {
- System.out.print(friend + " ");
- }
- System.out.println();
- for (String role : person.getRoles()) {
- System.out.print(role + " ");
- }
- }
- /**
- * XStream 的常用方法
- * xstream.omitField(mytest.class,"name"); 定义某一个属性的值不进行xml序列化。
- * xstream.alias("cat",Cat.class);
- * xstream.aliasField("age",Cat.class,"mAge"); 对某一个类和类的属性进行别名定义。
- * xstream.useAttributeFor(String.class); 对所有String类型的字段定义为属性tag显示
- * xstream.useAttributeFor("name".String.class); 对所有String类型的字段名成为name 定义为属性tag显示
- */
- public static void main(String[] args) {
- XstreamDemo demo = new XstreamDemo();
- //demo.str2Java();
- //demo.java2XmlStr();
- demo.str2JavaFormXML();
- }
- }
person.java
- import java.util.List;
- public class Person {
- private String name;
- private Integer age;
- private String sex;
- private String telphone;
- private List<String> lovers;
- private List<String> friends;
- private String[] roles;
- /**set和get方法,以下省略**/
- }
XML文件 person.xml 放置位置跟XstreamDemo.class同一个目录
- <?xml version="1.0" encoding="UTF-8"?>
- <person>
- <name>Jack</name>
- <age>11</age>
- <sex>男</sex>
- <telphone>110</telphone>
- <lovers>parents</lovers>
- <lovers>wife</lovers>
- <friends>
- <string>LiLei</string>
- <string>LuXi</string>
- </friends>
- <roles>
- <string>friend</string>
- <string>father</string>
- <string>doctor</string>
- </roles>
- </person>