xstream解析xml字符串和生成对象
生活随笔
收集整理的這篇文章主要介紹了
xstream解析xml字符串和生成对象
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
一 目錄
二 代碼
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;/*** 描述:人 * 作者:姜鵬 * 時(shí)間: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;/*** 描述:電話號(hào)碼 * 作者:姜鵬 * 時(shí)間: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工具類* 作者:姜鵬* 時(shí)間:20170911* */ public class XstreamUtil {/*** 將xml字符串轉(zhuǎn)為對(duì)象* */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);//轉(zhuǎn)為對(duì)象object = xStream.fromXML(xmlString);return object;}/*** 將對(duì)象轉(zhuǎn)為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測(cè)試 * 作者:姜鵬 * 時(shí)間: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();// 構(gòu)造XStreamXStream xStream = new XStream();Person person = new Person();xStream.alias("person", Person.class);xStream.processAnnotations(new Class[]{Person.class});xStream.setMode(XStream.NO_REFERENCES);//轉(zhuǎn)為對(duì)象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 XMLPerson 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 XMXStream xStream2 = new XStream(); // // FileInputStream fileInputStream = new FileInputStream(new File( // filePath)); // Person person = (Person) xStream.fromXML(fileInputStream); // System.out.println(person.toString());}}
總結(jié)
以上是生活随笔為你收集整理的xstream解析xml字符串和生成对象的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: artDiaLog弹出插件
- 下一篇: javaMail邮件发送