- 浏览: 301572 次
- 性别:
- 来自: 杭州
文章分类
最新评论
-
wst0350:
点赞,有空深入讲解下原理
Servlet、Filter 和 Listener 调用顺序、生命周期的实验分析 -
tuspark:
Eclipse中高亮设置内容还有很多细节选项可以设置的,可以看 ...
Eclipse 设置匹配代码高亮 -
xichao1929:
这个时候,怎么启动发布的项目呢?????
JBoss设置为Windows服务 -
xiaozi7:
非常感谢,楼主的英语水平不一般那
WebSphere MQ Version 7 发布订阅相关配置 -
qtlkw:
slave没玩过
Hudson: java.lang.OutOfMemoryError: Java heap space error
转:
/**
*@author: chenyoulong
*@Title:PersonTest.java
*@date 2012-9-28 下午3:25:09
*@Description:TODO
*/
package com.test;
import java.util.ArrayList;
import java.util.List;
import com.entity.PersonBean;
import com.entity.PersonBean.Animal;
import com.entity.PersonBean.Friends;
import com.entity.PersonBean.Pets;
import com.entity.PersonBean.PhoneNumber;
import com.thoughtworks.xstream.XStream;
import com.thoughtworks.xstream.io.xml.DomDriver;
/**
* @ClassName:PersonTest
* @author: chenyoulong Email: chen.youlong@payeco.com
* @date :2012-9-28 下午3:25:09
* @Description:TODO
*/
public class PersonTest {
/**
* @Title: main
* @Description: TODO
* @param args
* @return void
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
// toXml
// String xmlStr=new PersonTest().toXml();
// toBean
PersonBean per = new PersonTest().toBean();
// String xmlStr="<person>"+
// "<firstName>chen</firstName>"+
// "<lastName>youlong</lastName>"+
// "<telphone>"+
// "<code>137280</code>"+
// "<number>137280968</number>"+
// "</telphone>"+
// "<faxphone>"+
// "<code>20</code>"+
// "<number>020221327</number>"+
// "</faxphone>"+
// "<friends>"+
// "<name>A1</name>"+
// "<name>A2</name>"+
// "<name>A3</name>"+
// "</friends>"+
// "<pets>"+
// "<pet>"+
// "<name>doly</name>"+
// "<age>2</age>"+
// "</pet>"+
// "<pet>"+
// "<name>Ketty</name>"+
// "<age>2</age>"+
// "</pet>"+
// "</pets>"+
// "</person>";
// PersonBean person=XmlUtil.toBean(xmlStr, PersonBean.class);
// System.out.println("person=firstname=="+person.getFirstName());
// System.out.println("person==Friends==name1=="+person.getFriend().getName().get(0));
// System.out.println("person==Pets==name2=="+person.getPet().getAnimalList().get(1).getName());
//
}
/**
* 注解生产xml
*
* @Title: toXml
* @Description: TODO
* @return String
*/
public String toXml() {
PersonBean per = new PersonBean();
per.setFirstName("chen");
per.setLastName("youlong");
PhoneNumber tel = new PhoneNumber();
tel.setCode(137280);
tel.setNumber("137280968");
PhoneNumber fax = new PhoneNumber();
fax.setCode(20);
fax.setNumber("020221327");
per.setTel(tel);
per.setFax(fax);
// 测试一个标签下有多个同名标签
List<String> friendList = new ArrayList<String>();
friendList.add("A1");
friendList.add("A2");
friendList.add("A3");
Friends friend1 = new Friends();
friend1.setName(friendList);
per.setFriend(friend1);
// 测试一个标签下循环对象
Animal dog = new Animal("doly", 2);
Animal cat = new Animal("Ketty", 2);
List<Animal> petList = new ArrayList<Animal>();
petList.add(dog);
petList.add(cat);
Pets pet = new Pets();
pet.setAnimalList(petList);
per.setPet(pet);
XStream xstream = new XStream(new DomDriver("utf-8")); // 指定编码解析器
xstream.processAnnotations(PersonBean.class);// 如果没有这句,xml中的根元素会是<包.类名>;或者说:注解根本就没生效,所以的元素名就是类的属性
xstream.aliasSystemAttribute(null, "class");
String xmlString = xstream.toXML(per);
System.out.println("xml===" + xmlString);
return xmlString;
}
/**
* toBean
*
* @Title: toBean
* @Description: TODO
* @return
* @return PersonBean
*/
public PersonBean toBean() {
String xmlStr = "<person>" + "<firstName>chen</firstName>"
+ "<lastName>youlong</lastName>" + "<telphone>"
+ "<code>137280</code>" + "<number>137280968</number>"
+ "</telphone>" + "<faxphone>" + "<code>20</code>"
+ "<number>020221327</number>" + "</faxphone>" + "<friends>"
+ "<name>A1</name>" + "<name>A2</name>" + "<name>A3</name>"
+ "</friends>" + "<pets>" + "<pet>" + "<name>doly</name>"
+ "<age>2</age>" + "</pet>" + "<pet>" + "<name>Ketty</name>"
+ "<age>2</age>" + "</pet>" + "</pets>" + "</person>";
XStream xstream = new XStream(new DomDriver()); // 注意:不是new Xstream();
// 否则报错:java.lang.NoClassDefFoundError:
// org/xmlpull/v1/XmlPullParserFactory
xstream.processAnnotations(PersonBean.class);
PersonBean person = (PersonBean) xstream.fromXML(xmlStr);
System.out.println("person=firstname==" + person.getFirstName());
System.out.println("person==Friends==name1=="
+ person.getFriend().getName().get(0));
System.out.println("person==Pets==name=="
+ person.getPet().getAnimalList().get(1).getName());
return person;
}
/**
* 输出xml和解析xml的工具类
*
* @ClassName:XmlUtil
* @author: chenyoulong Email: chen.youlong@payeco.com
* @date :2012-9-29 上午9:51:28
* @Description:TODO
*/
public static class XmlUtil {
/**
* java 转换成xml
*
* @Title: toXml
* @Description: TODO
* @param obj
* 对象实例
* @return String xml字符串
*/
public static String toXml(Object obj) {
XStream xstream = new XStream();
// XStream xstream=new XStream(new DomDriver()); //直接用jaxp dom来解释
// XStream xstream=new XStream(new DomDriver("utf-8"));
// //指定编码解析器,直接用jaxp dom来解释
// //如果没有这句,xml中的根元素会是<包.类名>;或者说:注解根本就没生效,所以的元素名就是类的属性
xstream.processAnnotations(obj.getClass()); // 通过注解方式的,一定要有这句话
return xstream.toXML(obj);
}
/**
* 将传入xml文本转换成Java对象
*
* @Title: toBean
* @Description: TODO
* @param xmlStr
* @param cls
* xml对应的class类
* @return T xml对应的class类的实例对象
*
* 调用的方法实例:PersonBean person=XmlUtil.toBean(xmlStr,
* PersonBean.class);
*/
public static <T> T toBean(String xmlStr, Class<T> cls) {
// 注意:不是new Xstream(); 否则报错:java.lang.NoClassDefFoundError:
// org/xmlpull/v1/XmlPullParserFactory
XStream xstream = new XStream(new DomDriver());
xstream.processAnnotations(cls);
T obj = (T) xstream.fromXML(xmlStr);
return obj;
}
}
}
/**
*@author: chenyoulong
*@Title:PersonTest.java
*@date 2012-9-28 下午3:25:09
*@Description:TODO
*/
package com.test;
import java.util.ArrayList;
import java.util.List;
import com.entity.PersonBean;
import com.entity.PersonBean.Animal;
import com.entity.PersonBean.Friends;
import com.entity.PersonBean.Pets;
import com.entity.PersonBean.PhoneNumber;
import com.thoughtworks.xstream.XStream;
import com.thoughtworks.xstream.io.xml.DomDriver;
/**
* @ClassName:PersonTest
* @author: chenyoulong Email: chen.youlong@payeco.com
* @date :2012-9-28 下午3:25:09
* @Description:TODO
*/
public class PersonTest {
/**
* @Title: main
* @Description: TODO
* @param args
* @return void
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
// toXml
// String xmlStr=new PersonTest().toXml();
// toBean
PersonBean per = new PersonTest().toBean();
// String xmlStr="<person>"+
// "<firstName>chen</firstName>"+
// "<lastName>youlong</lastName>"+
// "<telphone>"+
// "<code>137280</code>"+
// "<number>137280968</number>"+
// "</telphone>"+
// "<faxphone>"+
// "<code>20</code>"+
// "<number>020221327</number>"+
// "</faxphone>"+
// "<friends>"+
// "<name>A1</name>"+
// "<name>A2</name>"+
// "<name>A3</name>"+
// "</friends>"+
// "<pets>"+
// "<pet>"+
// "<name>doly</name>"+
// "<age>2</age>"+
// "</pet>"+
// "<pet>"+
// "<name>Ketty</name>"+
// "<age>2</age>"+
// "</pet>"+
// "</pets>"+
// "</person>";
// PersonBean person=XmlUtil.toBean(xmlStr, PersonBean.class);
// System.out.println("person=firstname=="+person.getFirstName());
// System.out.println("person==Friends==name1=="+person.getFriend().getName().get(0));
// System.out.println("person==Pets==name2=="+person.getPet().getAnimalList().get(1).getName());
//
}
/**
* 注解生产xml
*
* @Title: toXml
* @Description: TODO
* @return String
*/
public String toXml() {
PersonBean per = new PersonBean();
per.setFirstName("chen");
per.setLastName("youlong");
PhoneNumber tel = new PhoneNumber();
tel.setCode(137280);
tel.setNumber("137280968");
PhoneNumber fax = new PhoneNumber();
fax.setCode(20);
fax.setNumber("020221327");
per.setTel(tel);
per.setFax(fax);
// 测试一个标签下有多个同名标签
List<String> friendList = new ArrayList<String>();
friendList.add("A1");
friendList.add("A2");
friendList.add("A3");
Friends friend1 = new Friends();
friend1.setName(friendList);
per.setFriend(friend1);
// 测试一个标签下循环对象
Animal dog = new Animal("doly", 2);
Animal cat = new Animal("Ketty", 2);
List<Animal> petList = new ArrayList<Animal>();
petList.add(dog);
petList.add(cat);
Pets pet = new Pets();
pet.setAnimalList(petList);
per.setPet(pet);
XStream xstream = new XStream(new DomDriver("utf-8")); // 指定编码解析器
xstream.processAnnotations(PersonBean.class);// 如果没有这句,xml中的根元素会是<包.类名>;或者说:注解根本就没生效,所以的元素名就是类的属性
xstream.aliasSystemAttribute(null, "class");
String xmlString = xstream.toXML(per);
System.out.println("xml===" + xmlString);
return xmlString;
}
/**
* toBean
*
* @Title: toBean
* @Description: TODO
* @return
* @return PersonBean
*/
public PersonBean toBean() {
String xmlStr = "<person>" + "<firstName>chen</firstName>"
+ "<lastName>youlong</lastName>" + "<telphone>"
+ "<code>137280</code>" + "<number>137280968</number>"
+ "</telphone>" + "<faxphone>" + "<code>20</code>"
+ "<number>020221327</number>" + "</faxphone>" + "<friends>"
+ "<name>A1</name>" + "<name>A2</name>" + "<name>A3</name>"
+ "</friends>" + "<pets>" + "<pet>" + "<name>doly</name>"
+ "<age>2</age>" + "</pet>" + "<pet>" + "<name>Ketty</name>"
+ "<age>2</age>" + "</pet>" + "</pets>" + "</person>";
XStream xstream = new XStream(new DomDriver()); // 注意:不是new Xstream();
// 否则报错:java.lang.NoClassDefFoundError:
// org/xmlpull/v1/XmlPullParserFactory
xstream.processAnnotations(PersonBean.class);
PersonBean person = (PersonBean) xstream.fromXML(xmlStr);
System.out.println("person=firstname==" + person.getFirstName());
System.out.println("person==Friends==name1=="
+ person.getFriend().getName().get(0));
System.out.println("person==Pets==name=="
+ person.getPet().getAnimalList().get(1).getName());
return person;
}
/**
* 输出xml和解析xml的工具类
*
* @ClassName:XmlUtil
* @author: chenyoulong Email: chen.youlong@payeco.com
* @date :2012-9-29 上午9:51:28
* @Description:TODO
*/
public static class XmlUtil {
/**
* java 转换成xml
*
* @Title: toXml
* @Description: TODO
* @param obj
* 对象实例
* @return String xml字符串
*/
public static String toXml(Object obj) {
XStream xstream = new XStream();
// XStream xstream=new XStream(new DomDriver()); //直接用jaxp dom来解释
// XStream xstream=new XStream(new DomDriver("utf-8"));
// //指定编码解析器,直接用jaxp dom来解释
// //如果没有这句,xml中的根元素会是<包.类名>;或者说:注解根本就没生效,所以的元素名就是类的属性
xstream.processAnnotations(obj.getClass()); // 通过注解方式的,一定要有这句话
return xstream.toXML(obj);
}
/**
* 将传入xml文本转换成Java对象
*
* @Title: toBean
* @Description: TODO
* @param xmlStr
* @param cls
* xml对应的class类
* @return T xml对应的class类的实例对象
*
* 调用的方法实例:PersonBean person=XmlUtil.toBean(xmlStr,
* PersonBean.class);
*/
public static <T> T toBean(String xmlStr, Class<T> cls) {
// 注意:不是new Xstream(); 否则报错:java.lang.NoClassDefFoundError:
// org/xmlpull/v1/XmlPullParserFactory
XStream xstream = new XStream(new DomDriver());
xstream.processAnnotations(cls);
T obj = (T) xstream.fromXML(xmlStr);
return obj;
}
}
}
发表评论
-
es使用两种方式
2018-06-28 16:26 0第一种方式: 使用TransportClient packag ... -
hbase
2018-06-25 13:50 0package cn.com.duiba.appordersy ... -
guava
2017-09-22 18:03 5921.Guava Cache的get/getIfPresent方 ... -
转:架构
2017-06-23 08:13 472架构是软件的核心和灵魂,没有好的架构的软件经过一段时间的迭代后 ... -
使用 redis 减少 秒杀库存 超卖思路
2017-06-22 23:58 556512月份重构公司社群活动产品,原来自己不是很成熟,按传统的形式 ... -
经典笔试题
2017-06-21 23:30 469public class BaseTest { pu ... -
Restful vs RPC
2017-01-23 10:54 834传统的RPC一般是基于二 ... -
自动产生随机数
2016-11-11 10:54 518/** * java生成随机数字和字母组合 ... -
commons-lang常用工具类StringEscapeUtils
2016-11-10 20:12 8451.escapeSql 提供sql转移功能,防止sql注入攻击 ... -
Java8:Lambda表达式增强版Comparator和排序
2016-10-27 10:32 2657http://www.importnew.com/15259. ... -
Java序列化几点注意事项
2016-10-26 17:02 865静态变量不属于对象,属于类,不能被序列化.还有瞬态的变量也不能 ... -
Rest vs dubbo
2016-09-15 18:10 0Rest 基于http, 大数据量和安全性可能不佳 dubbo ... -
List删除element两种方式的不同
2016-07-26 12:41 654public class DateUtilTest { ... -
Xmemcached——比spymemcached更快
2016-07-18 10:23 441Xmemcached是一个高性能的 ... -
velocity 缓存设置
2016-07-04 20:54 1032#velocity 是否开启缓存 velocity.resou ... -
Java8 Stream用法
2016-07-04 18:58 01. collect(toList()) 由stream里的值 ... -
熔断器设计模式
2016-05-22 23:14 568转载: http://www.cnblogs.com/ ... -
Date 参数
2016-04-22 21:44 531Oracle TO_CHAR parameters: The ... -
Dubbo安装部署
2016-04-18 01:16 1568Jdk-1.6.30以上版本 Tomcat-7 ... -
java read也需要加锁
2016-02-27 18:11 605今天被问到read需不需要加锁,结果没答上来。自己写了一个程序 ...
相关推荐
XStream:XStream是一个简单易用的Java库,用于序列化和反序列化对象。它可以将Java对象转换为XML文档,也可以将XML文档转换为Java对象。 pom引用 <groupId>com.thoughtworks.xstream</groupId> <artifactId>...
一个小demo展示xml的两种解析方式和四种解析方法,以及使用XStream进行javaBean与xml、json之间的转换
将对象(java bean)转换为xml字符串
JavaXml及Bean互转,内有xstream集成bean、xml互转工具类,JAXB注解实现bean、xml互转工具类
xstream-1.4.3 java bean xml 转换 java bean json 转换 包括lib src doc
将一个java对象转换为xml文件,或者将一个xml文件转换为一个java对象。 (有人说需要jaxws-api-2.0.jar这个包,但是我做这个例子时没有用的,不过我还是把它附上,备用)
xstream-1.3.1.jar javabean与xml之间的转化,实现转化
NULL 博文链接:https://kingxss.iteye.com/blog/1037741
xmlpull-1.1.3.1.jar/xstream-1.4.10.jar,xstream针对xml、bean转化
xstream-distribution-1.4.7-bin,可以轻松实现xml java bean Jason的转换
实现了bean转换为xml,xml转换为bean,xml转换为json等
TranXBean 提供了最简单的方法来帮助您以不需要了解和处理任何 DOM 模型的方式将 xml 转换为 bean 以及将 bean 转换为 xml。 使用内置的注解,可以帮助将常用的 Java Type 转换为 String 以进行 XML 转换。 此外,它...
可以轻松实现xml和bean的相互转换,文件中有使用实例以及xstream api。
1.android xUtils断点下载,图片加载,数据库 2.XStream实现xml与javaBean互转 3.打开本地音乐播放器
Spring 3.0 的一个新特性是 O/X Mapper。O/X 映射器这个概念并不新鲜,O 代表 Object,X 代表 XML。...其他这样的工具包括 XMLBeans、Java Architecture for XML Binding (JAXB)、JiBX 和 XStream。
4.11.1 使用Java类提供Bean定义信息 4.11.2 使用基于Java类的配置信息启动Spring容器 4.12 不同配置方式比较 4.13 小结 第5章 Spring容器高级主题 5.1 Spring容器技术内幕 5.1.1 内部工作机制 5.1.2 BeanDefinition ...
4.11.1 使用Java类提供Bean定义信息 4.11.2 使用基于Java类的配置信息启动Spring容器 4.12 不同配置方式比较 4.13 小结 第5章 Spring容器高级主题 5.1 Spring容器技术内幕 5.1.1 内部工作机制 5.1.2 BeanDefinition ...
Atabaque DTDtoBean从指定的DTD文件生成JavaBean。 您可以选择生成标准Java Bean或使用XStream注释或XML序列化的简单API。 它可以作为命令行,Swing应用程序或NetBeans插件使用。
Aliasing a bean outside the bean definition ................................................ 28 Instantiating beans .......................................................................................
Aliasing a bean outside the bean definition ................................................ 28 Instantiating beans .......................................................................................