JavaBean转换为XML的源码
package com.cmge.utils; import java.util.Iterator; import com.cmge.org.oa.bean.OADepartment;
import com.coast.foundation.utils.StringUtil;
import com.thoughtworks.xstream.XStream;
import com.thoughtworks.xstream.io.xml.XmlFriendlyReplacer;
import com.thoughtworks.xstream.io.xml.XppDriver; import java.util.HashMap;
import java.util.LinkedList;
import java.util.Map;
import java.util.Iterator; /**
* XML与JavaBean相互转换工具类
* File: XMLBeanUtils.java
19
*/
public class XmlXStreamUtil {
private String version = "";
private String xml = "";
private LinkedList<String> addXml = new LinkedList<String>();
public static XmlXStreamUtil Build(){
return new XmlXStreamUtil();
} public XmlXStreamUtil xmlVersion(){
version = "<?xml version=\"1.0\" encoding=\"utf-8\"?>";
return this;
} public XmlXStreamUtil xmlVersion(String version,String encoding){
version = "<?xml version=\""+version+"\" encoding=\""+encoding+"\"?>";
return this;
} public XmlXStreamUtil XmlAdd(String v){
addXml.push(v);
return this;
} public String toString(){
StringBuffer sb = new StringBuffer(); if(!StringUtil.isNull(version))
sb.append(version);
for(int i = 0; i < addXml.size(); i++){
String v = addXml.get(i).toString();
sb.append("<"+v+">").append("\n");
}
//
sb.append(xml);
//
for(int i = addXml.size()-1; i >= 0; i--){
String v = addXml.get(i).toString();
sb.append("\n</"+v+">");
}
return sb.toString();
} public XmlXStreamUtil bean2xml(Class cls,String alias,Object bean){
bean2xml(cls,alias,null,bean);
return this;
} public XmlXStreamUtil bean2xml(Class cls,String alias,String attribute,Object bean){
XStream xstream = new XStream(
new XppDriver(new XmlFriendlyReplacer("_-", "_")));
xstream.alias(alias, cls);
if(!StringUtil.isNull(attribute)){
xstream.useAttributeFor( cls,attribute);
xstream.autodetectAnnotations(true);
}
xml = xstream.toXML(bean);
return this;
} /**
* 将Bean转换为XML
*
* @param clazzMap 别名-类名映射Map
* @param bean 要转换为xml的bean对象
* @return XML字符串
*/
public XmlXStreamUtil bean2xml(Map<String, Class> clazzMap, Object bean) {
XStream xstream = new XStream(
new XppDriver(new XmlFriendlyReplacer("_-", "_"))); for (Iterator it = clazzMap.entrySet().iterator(); it.hasNext();) {
Map.Entry<String, Class> m = (Map.Entry<String, Class>) it.next();
System.out.println("key="+m.getKey()+",v="+m.getValue());
xstream.alias(m.getKey(), m.getValue());
}
xml = xstream.toXML(bean);
System.out.println("xml=\n");
return this;
} /**
* 将XML转换为Bean
*
* @param clazzMap 别名-类名映射Map
* @param xml 要转换为bean对象的xml字符串
* @return Java Bean对象
*/
public Object xml2Bean(Map<String, Class> clazzMap, String xml) {
XStream xstream = new XStream(
new XppDriver(new XmlFriendlyReplacer("_-", "_")));
for (Iterator it = clazzMap.entrySet().iterator(); it.hasNext();) {
Map.Entry<String, Class> m = (Map.Entry<String, Class>) it.next();
xstream.alias(m.getKey(), m.getValue());
}
Object bean = xstream.fromXML(xml);
return bean;
} /**
* 获取XStream对象
*
* @param clazzMap 别名-类名映射Map
* @return XStream对象
*/
public XStream getXStreamObject(Map<String, Class> clazzMap) {
XStream xstream = new XStream(
new XppDriver(new XmlFriendlyReplacer("_-", "_")));
for (Iterator it = clazzMap.entrySet().iterator(); it.hasNext();) {
Map.Entry<String, Class> m = (Map.Entry<String, Class>) it.next();
xstream.alias(m.getKey(), m.getValue());
}
return xstream;
} public static void main(String [] args){ OADepartment od = new OADepartment(); od.setFullname("12312");
od.setCode("123");
od.setOrg_code("dd");
od.setCanceled("");
//XmlUtil.beanToXmlStr(OADepartment.class, "1", "2");
Map<String,Class> map = new HashMap();
map.put("org", OADepartment.class);
String xml = XmlXStreamUtil.Build() // .bean2xml(map, od)
.XmlAdd("root")
.XmlAdd("orglist")
.XmlAdd("ff")
.xmlVersion()
.bean2xml(OADepartment.class, "org","code", od)
.toString(); System.out.println(xml); System.out.println("\n\n\n\n");
String xml2 = XmlXStreamUtil.Build() .bean2xml(OADepartment.class, "org", od)
.toString();
System.out.println(xml2);
}
}
JavaBean转换为XML的源码的更多相关文章
- C#/ASP.NET MVC微信公众号接口开发之从零开发(二) 接收微信消息并且解析XML(附源码)
文章导读: C#微信公众号接口开发之从零开发(一) 接入微信公众平台 微信接入之后,微信通过我们接入的地址进行通信,其中的原理是微信用户发送消息给微信公众账号,微信服务器将消息以xml的形式发送到我们 ...
- python实战===图片转换为字符的源码(转)
#cmd执行命令为>>> python xx.py pic.png#-*- coding:utf-8 -*- from PIL import Image import argpars ...
- 利用Java针对MySql封装的jdbc框架类 JdbcUtils 完整实现(包含增删改查、JavaBean反射原理,附源码)
最近看老罗的视频,跟着完成了利用Java操作MySql数据库的一个框架类JdbcUtils.java,完成对数据库的增删改查.其中查询这块,包括普通的查询和利用反射完成的查询,主要包括以下几个函数接口 ...
- 仿酷狗音乐播放器开发日志二十四 选项设置窗体的实现(附328行xml布局源码)
转载请说明原出处,谢谢~~ 花了两天时间把仿酷狗的选项设置窗体做出来了,当然了只是做了外观.现在开学了,写代码的时间减少,所以整个仿酷狗的工程开发速度减慢了.今天把仿酷狗的选项设置窗体的布局代码分享出 ...
- C#演示如何使用 XML 将源码编入文档
工作闲暇时间,将做工程过程中常用的代码段记录起来,下面的代码是关于C#演示如何使用 XML 将编入文档的代码,希望对大伙有较大帮助. using System; public class SomeCl ...
- 6.2 dubbo在spring中自定义xml标签源码解析
在6.1 如何在spring中自定义xml标签中我们看到了在spring中自定义xml标签的方式.dubbo也是这样来实现的. 一 META_INF/dubbo.xsd 比较长,只列出<dubb ...
- ehcache加载配置文件ehcache.xml的源码
package net.sf.ehcache.config; public final class ConfigurationFactory { public static Configuration ...
- 使用dom4j写xml文件——源码
1 dom4j下载与配置 1.1 dom4j下载 请移步下载链接 1.2 maven依赖 <dependency> <groupId>org.dom4j</groupId ...
- javabean 和 xml 互转
1.场景描述 将javabean对象转换为xml字符串,将xml字符串转换为javabean对象. 2.maven依赖 <dependency> <groupId>jdom&l ...
随机推荐
- Docker 修改默认存储位置
首先使用 docker info 查看 docker 的基本信息 sudo docker info Containers: 0 Images: 5 Storage Driver: devicemapp ...
- jQuery简单实现iframe的高度根据页面内容自适应的方法
同域下: //注意:下面的代码是放在和iframe同一个页面中调用 $("#myiframe").load(function () { var myiframeH = $(this ...
- yii2中事务不能回滚的解决
$player1 = Player::findOne(1); $player1->nickname = '111'; $player2 = Player::findOne(2); $player ...
- Orchard源码分析(5.3):EndRequest事件处理(DefaultOrchardHost.EndRequest方法)
EndRequest事件处理的作用是处理完"处理引擎(ProcessingEngine)"中的任务(Task). void IOrchardHost .EndR ...
- Redis安装及主从配置(转)
一.何为Redis redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合)和zset(有 ...
- hdu5024 Wang Xifeng's Little Plot (水
http://acm.hdu.edu.cn/showproblem.php?pid=5024 网络赛 Wang Xifeng's Little Plot Time Limit: 2000/1000 M ...
- protobuf
1.下载地址:https://code.google.com/p/protobuf/downloads/list 安装 ./configure && make && m ...
- 更改vs自带的模板
路径:C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\ItemTemplatesCache\CSharp\Code\20 ...
- 包介绍 - UriTemplates (用于处理格式化Uri模板)
UriTemplates 用于处理格式化Uri模板 PM> Install-Package Tavis.UriTemplates 设置Uri Path Segment [Fact] public ...
- 黄学长模拟day1 球的序列
N个编号为1-n的球,每个球都有唯一的编号.这些球被排成两种序列,分别为A.B序列,现在需要重新寻找一个球的序列l,对于这个子序列l中任意的两个球,要求j,k(j<k),都要求满足lj在A中位置 ...