- 浏览: 163317 次
- 性别:
- 来自: 重庆
文章分类
最新评论
-
lilixu:
Netcdf (二) -
publicorprivate:
[b]atwr s [/b]
xml和实体对象相互转换 一步到位 -
mangolms:
讲得很好,顶一个
Java 线程入门 -
crawler:
lvwenwen 写道求问楼主自己学习的总结还是有什么相关的材 ...
第二章 面向对象的几个基本原则 -
lvwenwen:
求问楼主自己学习的总结还是有什么相关的材料
第二章 面向对象的几个基本原则
用Xstream完成xml与对象之间的相互转换,我在xstream包的基础上简单的封装了一下:
如以下xml:
<?xml version="1.0" encoding="UTF-8"?> <html> <body> <div id="div1" name="div"/> <form action="saveForm.asp" method="post"> <h1>请输入您的联系信息:</h1> <lable>名字:</lable> <p> <input type="submit" id="btn_sub" name="btn_sub" value="Submit"/> <input type="reset" id="btn_res" name="btn_res" value="Reset"/> </p> </form> </body> </html>
想快速转换成对象。
第一步将xml分解成不同的对象如下,HtmlBean 为主体对象:
<html>标签:
@XStreamAlias("html") public class HtmlBean implements BaseConverterBean { private HtmlBody body; public HtmlBody getBody() { return body; } public void setBody(HtmlBody body) { this.body = body; } }
<body>标签:
@XStreamAlias("body") public class HtmlBody implements BaseConverterBean { private HtmlDiv div; private HtmlForm form; public HtmlForm getForm() { return form; } public void setForm(HtmlForm form) { this.form = form; } public HtmlDiv getDiv() { return div; } public void setDiv(HtmlDiv div) { this.div = div; } }
<div>标签:
@XStreamAlias("div") public class HtmlDiv implements BaseConverterBean { @XStreamAsAttribute private String id; @XStreamAsAttribute private String name; public String getId() { return id; } public void setId(String id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } }
<form>标签:
@XStreamAlias("form") public class HtmlForm implements BaseConverterBean { @XStreamAsAttribute private String action; @XStreamAsAttribute private String method; private String h1; private String lable; private HtmlP p; public String getAction() { return action; } public void setAction(String action) { this.action = action; } public String getMethod() { return method; } public void setMethod(String method) { this.method = method; } public String getH1() { return h1; } public void setH1(String h1) { this.h1 = h1; } public String getLable() { return lable; } public void setLable(String lable) { this.lable = lable; } public HtmlP getP() { return p; } public void setP(HtmlP p) { this.p = p; } }
<p>标签:
@XStreamAlias("p") public class HtmlP implements BaseConverterBean { @XStreamImplicit private List<HtmlInput> input; public List<HtmlInput> getInput() { return input; } public void setInput(List<HtmlInput> input) { this.input = input; } }
<input>标签:
@XStreamAlias("input") public class HtmlInput implements BaseConverterBean { @XStreamAsAttribute private String type; @XStreamAsAttribute private String id; @XStreamAsAttribute private String name; @XStreamAsAttribute private String value; public String getType() { return type; } public void setType(String type) { this.type = type; } public String getId() { return id; } public void setId(String id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getValue() { return value; } public void setValue(String value) { this.value = value; } }
第二步:利用xstream将xml文件转换为对象HtmlBean :
public class XMLToBeanConverterTest { @Before public void setUp() throws Exception { } @After public void tearDown() throws Exception { } @Test public void testToBean() { HtmlBean bean = null; XStream xstream = XstreamUtil.getDriverInstace(); String xml = getResourceFileContent(XMLToBeanConverterTest.class, "html.xml"); if(xml!=null && !"".equals(xml)){ bean = (HtmlBean)ConverterFactory.getXMLToBeanConverterInstance(xml).stringToBean(xstream, HtmlBean.class, true); } String divid = bean.getBody().getDiv().getId(); String expected = "div1"; assertEquals(expected, divid); } @SuppressWarnings("unchecked") public static String getResourceFileContent(Class c,String name){ StringBuffer sb = new StringBuffer(); try { InputStream input = c.getClassLoader().getResourceAsStream(name); BufferedReader reader = new BufferedReader(new InputStreamReader(input,"UTF-8")); String line = null; while ((line = reader.readLine()) != null) { sb.append(line); } reader.close(); input.close(); } catch (Exception e) { e.printStackTrace(); } return sb.toString(); } }
ConverterFactory:
/** * 转换器工厂 * * @author crawler * */ public class ConverterFactory { /** * 获得BeanToXMLConverter实例化对象 * * @param bean 实体Bean对象 * * @return BeanToXMLConverter 实例化对象 */ public static XMLConverter getBeanToXMLConverterInstance(BaseConverterBean bean) { return new BeanToXMLConverter(bean); } public static BeanConverter getXMLToBeanConverterInstance(String xml) { return new XMLToBeanConverter(xml); } }
XMLToBeanConverter:
/** * xml转换为对应的实体bean对象 * * @author crawler * */ public class XMLToBeanConverter implements BeanConverter { private String xml; public XMLToBeanConverter(String xml){ this.xml = xml; } @SuppressWarnings("unchecked") public BaseConverterBean stringToBean(XStream xstream,Class type,boolean isAttribute) { if(isAttribute){ xstream.processAnnotations(type); } return (BaseConverterBean)xstream.fromXML(xml); } }
第三步:将bean对象转换成xml:
public class BeanToXMLConverterTest { @Before public void setUp() throws Exception { } @After public void tearDown() throws Exception { } @Test public void testToXml() { HtmlBean bean = new HtmlBean(); HtmlBody body = new HtmlBody(); HtmlDiv div = new HtmlDiv(); HtmlForm form = new HtmlForm(); HtmlP p = new HtmlP(); List<HtmlInput> inputs = new ArrayList<HtmlInput>(); HtmlInput input = new HtmlInput(); input.setId("btn_sub"); input.setType("submit"); input.setName("btn_sub"); input.setValue("Submit"); HtmlInput input2 = new HtmlInput(); input2.setId("btn_res"); input2.setType("reset"); input2.setName("btn_res"); input2.setValue("Reset"); inputs.add(input); inputs.add(input2); p.setInput(inputs); div.setId("div1"); div.setName("div"); form.setAction("saveForm.asp"); form.setH1("请输入您的联系信息:"); form.setLable("名字:"); form.setMethod("post"); form.setP(p); body.setDiv(div); body.setForm(form); bean.setBody(body); XMLConverter converter = ConverterFactory.getBeanToXMLConverterInstance(bean); XStream xstream = XstreamUtil.getInstance(); // 将对象转换为xml文件 String xml = converter.toXml(xstream, bean.getClass(), true); Document doc = null; try { doc = DocumentHelper.parseText(xml); } catch (DocumentException e) { e.printStackTrace(); } if(doc!=null){ xml = doc.asXML(); } System.out.println(xml); } }
BeanToXMLConverter:
/** * 将bean对象转换为xml形式的转换器 * * @author crawler * */ public class BeanToXMLConverter implements XMLConverter { private BaseConverterBean bean; public BeanToXMLConverter(BaseConverterBean bean) { this.bean = bean; } @SuppressWarnings("unchecked") public String toXml(XStream xstream,Class type,boolean isAttribute) { if(isAttribute){ xstream.processAnnotations(type); } return xstream.toXML(bean); } }
打印结果:
<?xml version="1.0" encoding="UTF-8"?> <html> <body> <div id="div1" name="div"/> <form action="saveForm.asp" method="post"> <h1>请输入您的联系信息:</h1> <lable>名字:</lable> <p> <input type="submit" id="btn_sub" name="btn_sub" value="Submit"/> <input type="reset" id="btn_res" name="btn_res" value="Reset"/> </p> </form> </body> </html>
与顶部的xml完全一致。这样就完成了相互的转换很方便。
如果需要可以下载附件我贴上了我的Myeclipse工程,有对应的测试类和源码。
- XstreamConverter.zip (699.1 KB)
- 下载次数: 144
评论
6 楼
publicorprivate
2013-06-08
[b]atwr s [/b]
5 楼
ryan_pzq
2013-03-25
如果嵌套调用的,例如
<p>
<p></p>
</p>
这样的怎么解析,嵌套层次,位置不定
<p>
<p></p>
</p>
这样的怎么解析,嵌套层次,位置不定
4 楼
ychengIT
2012-09-25
不错 !!!
3 楼
yekui
2012-09-07
大哥,有意思么?
2 楼
crawler
2012-09-05
yjc2020 写道
用json就爽多了
xstream也支持json,不过一般存储数据以xml居多,json更多在于前后台交互。
1 楼
yjc2020
2012-09-05
用json就爽多了
发表评论
-
将博客搬至CSDN
2017-05-24 18:01 334将博客搬至CSDN -
Java基本类型与byte数组之间相互转换
2013-05-15 18:07 4280转:http://blog.sina.com.cn/s/bl ... -
Java 线程入门
2013-05-09 15:28 14581概念 线程,有时被称为轻量级进程(Lightweigh ... -
Java IO流 续
2013-05-08 09:39 13171.基于字节文件读写 FileInputStream和F ... -
Java IO流
2013-05-08 09:16 14921.流的概念 流是一个很形象的概念当程序需要读取数据的 ... -
EJB实体bean之间的关系-ORM
2013-05-06 08:05 12111.ORM: Object Relational ... -
第四章 简单工厂模式
2013-05-05 15:02 9791.简单工厂模式 简单工厂模式又叫做静态工厂方法模式。它 ... -
第三章 单例模式
2013-05-05 14:52 8463.1单例(Singleton)模式 保证一个类仅有一个 ... -
第二章 面向对象的几个基本原则
2013-05-05 14:42 22862.1 抽象类和接口 抽象类是可以继承一个抽象类 ... -
第一章 设计模式与简介
2013-05-05 14:16 11341.1什么是设计模式 人们在自己的环境中不断发现问题和寻 ... -
frameset session失效后 返回到 顶层登陆页面
2013-04-23 14:26 816采用frameset来布局网页的时候,可能由于session ... -
Xstream-xml和实体对象相互转换特殊问题
2012-09-06 18:39 6355之前发了一篇博文《xml和实体对象相互转换 一步到位 》 ... -
理解JMS
2012-09-06 16:31 2186首先JMS存在的理由: RPC(Remote proced ... -
系统权限设计
2012-09-05 21:56 1723主体对象: 1.用户 2. ... -
回望Java中的多线程并发(一)
2012-09-05 08:55 1718并发其实并不等于多线程,可以理解为多线程是实现并发的一种方式, ... -
回望Java中的final关键字
2012-09-03 15:25 2360final关键字可以理解为“这个东西不能改变”。之所以要禁止改 ... -
Java内存区域与内存溢出异常
2012-09-02 18:56 1411之前根据平时的积累总 ... -
Netcdf (二)
2011-05-26 19:34 5111附件文档: 4 NetCDF Java 4.1 概述( ... -
Netcdf (一)
2011-05-26 19:31 4185由于工作原因最近看了下Netcdf: NetCDF 1 N ... -
接口 实现类 抽象
2011-02-28 20:28 992接口(Interface)是一个角色(Role), 实现类( ...
相关推荐
里面是xml转换成为java对象的两种方法,
XML与实体类的相互转换工具,util是工具类,MyTest包含实体类转xml字符串以及XML字符串转实体类的方法,需要引入外部依赖或jar包,亲测可用
自己写的一个xml映射实体对象类,附件为一个AXIS客户端代码生成文档
使用java jdk的JAXB技术实现xml与java对象互相转化代码教程: JDK中JAXB相关的重要Class和Interface:(来源于百度百科JAXB) •JAXBContext类,是应用的入口,用于管理XML/Java绑定信息。 •Marshaller接口,将Java...
将XML与Java对象的转化方法封装到工具类当中,举了几个例子说明如何让XML与Java对象互相转换。
C#对象和Xml对象的相互转化 C#对象和Xml对象的相互转化
好用的xStream XML和JAVA对象互相转换的简单示例,内附依赖的xstream-1.3.1.jar和xpp3_min-1.1.4c.jar
本文实例讲述了C#实现XML与实体类之间相互转换的方法。分享给大家供大家参考,具体如下: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.IO; using System...
我自己写的一个方法,是XML与实体相互转换只要引用这个包就可以用了.详细只要调用方就可以了 可以重新封装
xml报文和java对象互相转换 相关jar包和测试代码,可以与castor插件java对象和XML自动绑定maping文件生成和java对象一键生成工具1.2(https://download.csdn.net/download/kemoing/10864595)完美配合使用
在调用别的平台接口时,通常都是返回xml数据,很苦恼怎么把这些数据直接转换成实体,以便于更方便的操作,下载这个文档将帮助您解决这个麻烦,我是觉得挺好用的,不知道你呢?
simple-xml2object是一个简单实用的xml和JAVA对象转换的类库,jar包很小,而且不需要任何依赖包。 下载后,压缩包包含一个jar包,导入即可。包含一个测试类,有详细的注释展示用法。还包含一个中文文档。
主要实现读取xml文件内容然后转换成List对象,两种实现方法。
JAXB工具类 xml转为java对象 java对象转为xml ,本人亲测,可以使用!!!
mybatis自动导入实体类和xml工具包 自动生成实体类和xml 配置的过程在我的博文里有
用c#实现对象object与xml相互转换
XML 节点名称 要与Bean相同 该项目 包含测试代码 可以演示。 节点属性 可以为String 多层节点 请用List表示
xml和bean之间的相互转换源码,xml和bean之间的相互转换源码
xStream可以轻易的将Java对象和xml文档相互转换,本实例详细介绍了运用xStream将对象转xml和xml转对象操作.zip,太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码功能进行参考学习。