Xstream解析XML,包括对数组和List的处理

使用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",Person.class);
		xStream.alias("lovers",String.class);     //private List<String> lovers;是string类型
        xStream.addImplicitCollection(Person.class, "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>


 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值