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 ...
随机推荐
- Multiple actions were found that match the request Web API
在WebAPI工程入口不对外公开的接口不能使用public. [HttpPost] public string PostRequest([FromBody] Model model) { /// } ...
- thinkphp 模板里a标签 href 带参数的 使用U函数方法
简单的说就是模板里 分类的链接地址 实现这个样子的 <a href="/index.php/Home/Category/assortment/cateid/2.html"&g ...
- 在Razor中如何引入命名空间?("import namespace in razor view") 【转】
原文链接 找了半天,原来如此: 在aspx中: <%@ Import Namespace = "Martian.Areas.SFC.Models" %><%@ I ...
- Linq_Lambda GroupBy使用笔记
今天看MVC遇到了GroupBY的Lambda表达式..有兴趣详细的看下去..得此笔记..记录之... 不罗嗦..上代码... //得到List<GroupEmail>对象 数据源 var ...
- VisualStudio基本使用(1)-显示行号
"工具"-"选项"-"文本编辑器"-"C/C++"-"常规",勾选"行号"复选框 ...
- vim 配置,我本机的配置[windows]
set nocompatible source $VIMRUNTIME/vimrc_example.vim source $VIMRUNTIME/mswin.vim behave mswin set ...
- sql sever 字符串函数
SQL Server之字符串函数 以下所有例子均Studnet表为例: 计算字符串长度len()用来计算字符串的长度 select sname ,len(sname) from student ...
- jquery 隐藏表单元素
1.html <label for="lbl" >电压等级:</label> <input class="easyui-combobox&q ...
- POJ 2155 Matrix
二维树状数组.... Matrix Time Limit: 3000MS Memory Limit: 65536K Total Submissio ...
- 什么是H标签?H1,H2,H3标签?以及和strong标签使用的方法及重要性
大家都知道,seo的一个很重要的一点就是要把网站做的条理清晰,让搜索引擎很容易的读明白,这个条理清晰不仅体现在网站的物理路径,url等地 方.在<h1><h2><h3&g ...