JavaBean转换为XML的源码
2015-09-28 14:40
495 查看
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); } }
相关文章推荐
- Struts2 三、指定Struts2处理的请求后缀
- Struts2 三、指定Struts2处理的请求后缀
- java 去除字符串的换行符
- Map用法
- 学习maven的使用(maven在eclipse中的使用)(一)
- spring mvc 获取到request response @ModelAttribute
- eclipse中egit插件使用--升级版
- leetcode:Interleaving String 使用动态规划求解的java源代码
- eclipse中使用axis2插件发布服务(WebService)和生成客户端(Client)及axis2插件的使用
- Java maven国内镜像
- Java基础学习总结----数据类型和运算符
- An unexpected error has been detected by Java Runtime Environment
- Spring MVC 中的 forward 和 redirect
- Spring context:component-scan中使用context:include-filter和context:exclude-filter
- access denied ("java.net.SocketPermission" "localhost:1527" "listen,resolve")
- Java学习笔记【多线程基本知识】
- Idea 编译报错 javacTask: 源发行版 1.8 需要目标发行版 1.8
- Java通过反射创建对象
- 解决Eclipse编译Debug certificate expired的问题
- Java NIO 缓冲技术详解