您的位置:首页 > 其它

xstream解析xml字符串和生成对象

2017-09-12 11:36 337 查看
一 目录



二 代码

1 Person.java

package com.jn.xstream.bean;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import com.thoughtworks.xstream.annotations.XStreamAlias;
import com.thoughtworks.xstream.annotations.XStreamImplicit;
import com.thoughtworks.xstream.annotations.XStreamInclude;

/**
* 描述:人
* 作者:姜鹏
* 时间:20170911
* */
@XStreamAlias("person")
public class Person {

@XStreamAlias("firstname")
private String firstname;

@XStreamAlias("lastname")
private String lastname;

@XStreamAlias("phone")
private PhoneNumber phone;

@XStreamAlias("fax")
private PhoneNumber fax;

//	@XStreamImplicit()
//	private List<PhoneNumber> para = new ArrayList<PhoneNumber>();

@XStreamImplicit()
private Map<String,PhoneNumber> map = new HashMap<String,PhoneNumber>();

public Person(String firstname, String lastname) {
this.firstname = firstname;
this.lastname = lastname;
}

public Person() {

}

public String getFirstname() {
return firstname;
}

public void setFirstname(String firstname) {
this.firstname = firstname;
}

public String getLastname() {
return lastname;
}

public void setLastname(String lastname) {
this.lastname = lastname;
}

public PhoneNumber getPhone() {
return phone;
}

public void setPhone(PhoneNumber phone) {
this.phone = phone;
}

public PhoneNumber getFax() {
return fax;
}

public void setFax(PhoneNumber fax) {
this.fax = fax;
}

public Map getMap() {
return map;
}

public void setMap(Map map) {
this.map = map;
}

}
2 PhoneNumber.java

package com.jn.xstream.bean;

import com.thoughtworks.xstream.annotations.XStreamAlias;

/**
* 描述:电话号码
* 作者:姜鹏
* 时间:20170911
* */
@XStreamAlias("PhoneNumber")
public class PhoneNumber {

@XStreamAlias("code")
private int code;

@XStreamAlias("number")
private String number;

public PhoneNumber(int code, String number) {
this.code = code;
this.number = number;
}

public PhoneNumber() {

}

public void setCode(int code) {
this.code = code;
}

public void setNumber(String number) {
this.number = number;
}

public int getCode() {
return code;
}

public String getNumber() {
return number;
}
}
3 XstreamUtil.java

package com.jn.xstream.util;

import com.thoughtworks.xstream.XStream;

/**
* 描述:xtream工具类
* 作者:姜鹏
* 时间:20170911
* */
public class XstreamUtil {

/**
* 将xml字符串转为对象
* */
public static Object xmlStr2Object(String xmlString,Class clazz) throws Exception{
if( clazz == null || xmlString == null || "".equals(xmlString.replace(" ", "")) ) return null;
Object object = clazz.newInstance();
XStream xStream = new XStream();
String className = object.getClass().getName();
xStream.alias(className, clazz);
xStream.processAnnotations(new Class[]{clazz});
xStream.setMode(XStream.NO_REFERENCES);
//转为对象
object = xStream.fromXML(xmlString);
return object;

}

/**
* 将对象转为xml格式字符串
* */
public static String object2XmlStr(Object obj) throws Exception{
if(obj==null) return null;
XStream xStream = new XStream();
String xml = xStream.toXML(obj);
return xml;
}

}
4 XStreamTest.java

package com.jn.xstream.test;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;

import com.jn.xstream.bean.Person;
import com.jn.xstream.bean.PhoneNumber;
import com.jn.xstream.util.XstreamUtil;
import com.thoughtworks.xstream.XStream;

/**
* 描述:xstream测试
* 作者:姜鹏
* 时间:20170911
* */
public class XStreamTest {

public static  void test2() throws Exception{
// 拼接字符串
StringBuffer sb = new StringBuffer();
sb.append("<person>");
sb.append("  <firstname>Joe</firstname>");
sb.append("  <lastname>Walnes</lastname>");
sb.append("  <phone>");
sb.append("    <code>123</code>");
sb.append("    <number>1234-456</number>");
sb.append("  </phone>");
sb.append("  <fax>");
sb.append("    <code>123</code>");
sb.append("    <number>9999-999</number>");
sb.append("  </fax>");
sb.append("</person>");
String xml = sb.toString();
Person person = (Person) XstreamUtil.xmlStr2Object(xml, Person.class);
System.out.println("person2 = "+person);

}

public static  void test3() throws Exception{
Person joe = new Person("Joe", "Walnes");
joe.setPhone(new PhoneNumber(123, "1234-456"));
joe.setFax(new PhoneNumber(123, "9999-999"));

PhoneNumber phoneNumber1 = new PhoneNumber(123, "1234-456");
PhoneNumber phoneNumber2 = new PhoneNumber(123, "1234-456");
joe.getMap().put("phoneNumber1", phoneNumber1);
joe.getMap().put("phoneNumber2", phoneNumber2);

String result = XstreamUtil.object2XmlStr(joe);
System.out.println("result = "+result);
}

public static  void test1(){
// 拼接字符串
StringBuffer sb = new StringBuffer();
sb.append("<person>");
sb.append("  <firstname>Joe</firstname>");
sb.append("  <lastname>Walnes</lastname>");
sb.append("  <phone>");
sb.append("    <code>123</code>");
sb.append("    <number>1234-456</number>");
sb.append("  </phone>");
sb.append("  <fax>");
sb.append("    <code>123</code>");
sb.append("    <number>9999-999</number>");
sb.append("  </fax>");
sb.append("</person>");
String xml = sb.toString();
// 构造XStream
XStream xStream = new XStream();

Person person = new Person();
xStream.alias("person", Person.class);
xStream.processAnnotations(new Class[]{Person.class});
xStream.setMode(XStream.NO_REFERENCES);

//转为对象
person = (Person)xStream.fromXML(xml);
System.out.println("person = "+person);

}

public static void main(String[] args) throws Exception {
test3();
//		String filePath = "D:"+File.separator+"test"+File.separator+"xstream"+File.separator+"test.xml";
//		// Initializing XStream
//		XStream xStream = new XStream();
//		xStream.alias("person", Person.class);
//		xStream.alias("personnumber", PhoneNumber.class);
////
////		// Serializing an object to XML
////		Person joe = new Person("Joe", "Walnes");
////		joe.setPhone(new PhoneNumber(123, "1234-456"));
////		joe.setFax(new PhoneNumber(123, "9999-999"));
////		FileOutputStream fileOutputStream = new FileOutputStream(new File(
////				filePath));
////		xStream.toXML(joe, fileOutputStream);
////
////		// Deserializing an object back from XM
////		XStream xStream2 = new XStream();
//
//		FileInputStream fileInputStream = new FileInputStream(new File(
//				filePath));
//		Person person = (Person) xStream.fromXML(fileInputStream);
//		System.out.println(person.toString());

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: