xstream解析xml字符串和生成对象
2017-09-12 11:36
337 查看
一 目录
二 代码
1 Person.java
二 代码
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()); } }
相关文章推荐
- Java 利用Xstream注解生成和解析xml
- XStream解析XML文本并用反射机制转换为对象
- XStream解析XML文本并用反射机制转换为对象
- java WebService接口开发注意点 java 利用Xstream生成和解析xml知识结构
- android XMl 解析神奇xstream 二: 把对象转换成xml
- xstream对象转xml字符串,截取字符串
- (原)C++解析XML生成类对象_v1.0 函数指针
- android XMl 解析神奇xstream 四: 将复杂的xml文件解析为对象
- java使用jdom架包解析xml字符串dom原理并保存map对象
- android XMl 解析神奇xstream 四: 将复杂的xml文件解析为对象
- android XMl 解析神奇xstream 五: 把复杂对象转换成 xml ,并写入SD卡中的xml文件
- java生成解析xml的另外两种方法Xstream
- 将List<T>生成XML文档(字串),将XML文档(字串)解析成List<T>,适用于任何对象的
- JSON解析类库之Fastjson(1) --- Fastjson类库学习, 生成与解析json数据,json字符串与Java对象互转
- 使用XStream解析和生成xml文件
- XMLHttpRequest对象将xml文件解析成xmldom对象将字符串解析成xmldom对象
- fastjson--Gson生成Json字符串,并且解析Json字符串生成对象
- JSON解析类库之JSON-lib --- JSON-lib类库学习, 生成与解析json数据, json字符串与Java对象互转
- Javascript 解析字符串生成 XML DOM 对象。
- Java利用Xstream注解生成和解析xml