JavaBean转换为XML的源码

  1 package com.cmge.utils;
  2
  3 import java.util.Iterator;
  4
  5 import com.cmge.org.oa.bean.OADepartment;
  6 import com.coast.foundation.utils.StringUtil;
  7 import com.thoughtworks.xstream.XStream;
  8 import com.thoughtworks.xstream.io.xml.XmlFriendlyReplacer;
  9 import com.thoughtworks.xstream.io.xml.XppDriver;
 10
 11 import java.util.HashMap;
 12 import java.util.LinkedList;
 13 import java.util.Map;
 14 import java.util.Iterator;
 15
 16 /**
 17 * XML与JavaBean相互转换工具类
 18 * File: XMLBeanUtils.java
 19 * User: leizhimin
 20 * Date: 2008-3-5 14:28:29
 21 */
 22
 23 public class XmlXStreamUtil {
 24     private String version = "";
 25     private String xml = "";
 26     private LinkedList<String> addXml = new LinkedList<String>();
 27     public static XmlXStreamUtil Build(){
 28         return new XmlXStreamUtil();
 29     }
 30
 31     public XmlXStreamUtil xmlVersion(){
 32         version = "<?xml version=\"1.0\" encoding=\"utf-8\"?>";
 33         return this;
 34     }
 35
 36     public XmlXStreamUtil xmlVersion(String version,String encoding){
 37         version = "<?xml version=\""+version+"\" encoding=\""+encoding+"\"?>";
 38         return this;
 39     }
 40
 41     public XmlXStreamUtil XmlAdd(String v){
 42         addXml.push(v);
 43         return this;
 44     }
 45
 46     public String toString(){
 47         StringBuffer sb = new StringBuffer();
 48
 49         if(!StringUtil.isNull(version))
 50             sb.append(version);
 51         for(int i = 0; i < addXml.size(); i++){
 52             String v = addXml.get(i).toString();
 53             sb.append("<"+v+">").append("\n");
 54         }
 55         //
 56         sb.append(xml);
 57         //
 58         for(int i = addXml.size()-1; i >= 0; i--){
 59             String v = addXml.get(i).toString();
 60             sb.append("\n</"+v+">");
 61         }
 62         return sb.toString();
 63     }
 64
 65
 66     public XmlXStreamUtil bean2xml(Class cls,String alias,Object bean){
 67         bean2xml(cls,alias,null,bean);
 68         return this;
 69     }
 70
 71     public XmlXStreamUtil bean2xml(Class cls,String alias,String attribute,Object bean){
 72         XStream xstream = new XStream(
 73                 new XppDriver(new XmlFriendlyReplacer("_-", "_")));
 74         xstream.alias(alias, cls);
 75         if(!StringUtil.isNull(attribute)){
 76             xstream.useAttributeFor( cls,attribute);
 77             xstream.autodetectAnnotations(true);
 78         }
 79         xml = xstream.toXML(bean);
 80         return this;
 81     }
 82
 83
 84     /**
 85      * 将Bean转换为XML
 86      *
 87      * @param clazzMap 别名-类名映射Map
 88      * @param bean     要转换为xml的bean对象
 89      * @return XML字符串
 90      */
 91     public XmlXStreamUtil bean2xml(Map<String, Class> clazzMap, Object bean) {
 92         XStream xstream = new XStream(
 93                 new XppDriver(new XmlFriendlyReplacer("_-", "_")));
 94
 95         for (Iterator it = clazzMap.entrySet().iterator(); it.hasNext();) {
 96             Map.Entry<String, Class> m = (Map.Entry<String, Class>) it.next();
 97             System.out.println("key="+m.getKey()+",v="+m.getValue());
 98             xstream.alias(m.getKey(), m.getValue());
 99         }
100         xml = xstream.toXML(bean);
101         System.out.println("xml=\n");
102         return this;
103     }
104
105     /**
106      * 将XML转换为Bean
107      *
108      * @param clazzMap 别名-类名映射Map
109      * @param xml      要转换为bean对象的xml字符串
110      * @return Java Bean对象
111      */
112     public Object xml2Bean(Map<String, Class> clazzMap, String xml) {
113         XStream xstream = new XStream(
114                 new XppDriver(new XmlFriendlyReplacer("_-", "_")));
115         for (Iterator it = clazzMap.entrySet().iterator(); it.hasNext();) {
116             Map.Entry<String, Class> m = (Map.Entry<String, Class>) it.next();
117             xstream.alias(m.getKey(), m.getValue());
118         }
119         Object bean = xstream.fromXML(xml);
120         return bean;
121     }
122
123     /**
124      * 获取XStream对象
125      *
126      * @param clazzMap 别名-类名映射Map
127      * @return XStream对象
128      */
129     public XStream getXStreamObject(Map<String, Class> clazzMap) {
130         XStream xstream = new XStream(
131                 new XppDriver(new XmlFriendlyReplacer("_-", "_")));
132         for (Iterator it = clazzMap.entrySet().iterator(); it.hasNext();) {
133             Map.Entry<String, Class> m = (Map.Entry<String, Class>) it.next();
134             xstream.alias(m.getKey(), m.getValue());
135         }
136         return xstream;
137     }
138
139
140     public static void main(String [] args){
141
142
143         OADepartment od = new OADepartment();
144
145         od.setFullname("12312");
146         od.setCode("123");
147         od.setOrg_code("dd");
148         od.setCanceled("");
149         //XmlUtil.beanToXmlStr(OADepartment.class, "1", "2");
150         Map<String,Class> map = new HashMap();
151         map.put("org", OADepartment.class);
152         String xml = XmlXStreamUtil.Build()
153
154                     //    .bean2xml(map, od)
155                       .XmlAdd("root")
156                       .XmlAdd("orglist")
157                       .XmlAdd("ff")
158                       .xmlVersion()
159                        .bean2xml(OADepartment.class, "org","code", od)
160                       .toString();
161
162         System.out.println(xml);
163
164
165         System.out.println("\n\n\n\n");
166         String xml2 = XmlXStreamUtil.Build()
167
168                    .bean2xml(OADepartment.class, "org", od)
169                   .toString();
170         System.out.println(xml2);
171     }
172 }
时间: 2024-11-06 11:21:20

JavaBean转换为XML的源码的相关文章

利用Java针对MySql封装的jdbc框架类 JdbcUtils 完整实现(包含增删改查、JavaBean反射原理,附源码)

最近看老罗的视频,跟着完成了利用Java操作MySql数据库的一个框架类JdbcUtils.java,完成对数据库的增删改查.其中查询这块,包括普通的查询和利用反射完成的查询,主要包括以下几个函数接口: 1.public Connection getConnection()   获得数据库的连接 2.public boolean updateByPreparedStatement(String sql, List<Object>params)throws SQLException  更新数据库

C#/ASP.NET MVC微信公众号接口开发之从零开发(二) 接收微信消息并且解析XML(附源码)

文章导读: C#微信公众号接口开发之从零开发(一) 接入微信公众平台 微信接入之后,微信通过我们接入的地址进行通信,其中的原理是微信用户发送消息给微信公众账号,微信服务器将消息以xml的形式发送到我们的绑定的地址上,通过解析XML数据,获取到微信用户发送的消息,让根据微信消息(文本:关键字,图片,语音等等)回复XML格式的数据给微信服务器,微信服务器再将接收到的消息返回给用户微信. 我们所需要做的:接收消息和返回消息 一.创建实体类 首先看文档http://mp.weixin.qq.com/wi

mybatis之XML解析源码分析

一直想知道mybatis是如何解析xml文件的,今天认真看了下源码,这里记录一下 这里是用mybatis-spring的SqlSessionFactoryBean当作的入口,mybatis-spring其实很简单,源码也就几个看看就懂了,代理了一下而已没啥东东. 1.解析spring的配置 不过很多参数都是spring中来处理了,所以mybatis-spring没有先parse而是先加载了配置文件 依次是 typeAliasesPackage typeAliases Plugins typeHa

resultMap自定义某个javaBean的封装规则源码

<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!--namespace:名称空间 --> <mapper namespace="

仿酷狗音乐播放器开发日志二十四 选项设置窗体的实现(附328行xml布局源码)

转载请说明原出处,谢谢~~ 花了两天时间把仿酷狗的选项设置窗体做出来了,当然了只是做了外观.现在开学了,写代码的时间减少,所以整个仿酷狗的工程开发速度减慢了.今天把仿酷狗的选项设置窗体的布局代码分享出来,给学习duilib布局的朋友做个demo.现在编写的仿酷狗选项设置窗体和原酷狗的窗体不细看几乎看不出差别,控件的布局位置和原酷狗最多只有几个像素的位置差别. 先来看一下原酷狗的选项设置窗体的其中一个页面: 如果还不太会布局的朋友可以先看我前些日子写的关于duilib布局的博客<duilib各种布

使用dom4j写xml文件——源码

dom4j版本:2.1.1 使用dom4j生成xml文档步骤: 1.创建一个Document对象的空白文档. 2.向Document中添加根元素,返回的Element表示根元素,xml文档只有一个根元素. 3.添加子元素. 4.创建XmlWriter对象 5.输出Document对象 元素对象 1 package cnblogs.testCSV; 2 3 public class Person { 4 private String id; 5 private String name; 6 pri

【开源下载】基于winform的xml菜单编辑器(c#源码)

xml编辑器源码 最近帮朋友做了一个档案管理系统,客户端能够把文件上传到服务器,也能够从服务器下载,支持多用户.通讯框架使用的networkcomms v3框架. 这个档案管理系统中用到了树形目录,使用人员需要随时调整左侧的目录,考虑到使用数据库的比较繁琐,就想到了一个方法,即可以在客户端编辑左侧的那个目录,保存成一个xml文件.修改完成后需要的话可以把这个xml文件上传到服务器,其他人员可以从服务器加载这个xml文件.虽然简单,但也比较好的满足了朋友的需求.今天刚好有时间,把左侧目录的编辑页面

spring5源码分析系列(四)——IOC容器的初始化(二)

前言:上一篇讲到了Xml Bean读取器(XmlBeanDefinitionReader)调用其父类AbstractBeanDefinitionReader的reader.loadBeanDefinitions方法读取Bean定义资源,此篇我们继续后面的内容. (5)AbstractBeanDefinitionReader的loadBeanDefinitions方法 方法源码如下: //重载方法,调用下面的loadBeanDefinitions(String, Set<Resource>)方法

Solr4.9.0源码分析(1)之Solr的Servlet

Solr是作为一个Servlet运行在Tomcat里面的,可以查看Solr的web.xml. 1.web.xml配置 由web.xml可以看出,基本上所有Solr的操作都是在SolrDispatchFilter中实现的.当输入http://localhost:8080/solr/前缀的URL就会触发SolrDispatchFilter. 1 <filter> 2 <filter-name>SolrRequestFilter</filter-name> 3 <fil