/**

* 输出xml和解析xml的工具类

*@ClassName:XmlUtil

*@author: chenyoulong Email: chen.youlong@payeco.com

*@date :2012-9-29 上午9:51:28

*@Description:TODO

*/

public class XmlUtil{

/**

* java 转换成xml

* @Title: toXml

* @Description: TODO

* @param obj 对象实例

* @return String xml字符串

*/

public static String toXml(Object obj){

XStream xstream=new XStream();

// XStream xstream=new XStream(new DomDriver()); //直接用jaxp dom来解释

// XStream xstream=new XStream(new DomDriver("utf-8")); //指定编码解析器,直接用jaxp dom来解释

如果没有这句,xml中的根元素会是;或者说:注解根本就没生效,所以的元素名就是类的属性

xstream.processAnnotations(obj.getClass()); //通过注解方式的,一定要有这句话

return xstream.toXML(obj);

}

/**

* 将传入xml文本转换成Java对象

* @Title: toBean

* @Description: TODO

* @param xmlStr

* @param cls xml对应的class类

* @return T xml对应的class类的实例对象

*

* 调用的方法实例:PersonBean person=XmlUtil.toBean(xmlStr,PersonBean.class);

*/

public static T toBean(String xmlStr,Class cls){

//注意:不是new Xstream(); 否则报错:java.lang.NoClassDefFoundError: org/xmlpull/v1/XmlPullParserFactory

XStream xstream=new XStream(new DomDriver());

xstream.processAnnotations(cls);

T obj=(T)xstream.fromXML(xmlStr);

return obj;

}

/**

* 写到xml文件中去

* @Title: writeXMLFile

* @Description: TODO

* @param obj 对象

* @param absPath 绝对路径

* @param fileName 文件名

* @return boolean

*/

public static boolean toXMLFile(Object obj,String absPath,String fileName ){

String strXml = toXml(obj);

String filePath = absPath + fileName;

File file = new File(filePath);

if(!file.exists()){

try {

file.createNewFile();

} catch (IOException e) {

log.error("创建{"+ filePath +"}文件失败!!!" + Strings.getStackTrace(e));

return false ;

}

}// end if

OutputStream ous = null ;

try {

ous = new FileOutputStream(file);

ous.write(strXml.getBytes());

ous.flush();

} catch (Exception e1) {

log.error("写{"+ filePath +"}文件失败!!!" + Strings.getStackTrace(e1));

return false;

}finally{

if(ous != null )

try {

ous.close();

} catch (IOException e) {

log.error("写{"+ filePath +"}文件关闭输出流异常!!!" + Strings.getStackTrace(e));

}

}

return true ;

}

/**

* 从xml文件读取报文

* @Title: toBeanFromFile

* @Description: TODO

* @param absPath 绝对路径

* @param fileName 文件名

* @param cls

* @throws Exception

* @return T

*/

public static T toBeanFromFile(String absPath,String fileName,Class cls) throws Exception{

String filePath = absPath +fileName;

InputStream ins = null ;

try {

ins = new FileInputStream(new File(filePath ));

} catch (Exception e) {

throw new Exception("读{"+ filePath +"}文件失败!",e);

}

String encode = useEncode(cls);

XStream xstream=new XStream(new DomDriver(encode));

xstream.processAnnotations(cls);

T obj =null;

try {

obj = (T)xstream.fromXML(ins);

} catch (Exception e) {

// TODO Auto-generated catch block

throw new Exception("解析{"+ filePath +"}文件失败!",e);

}

if(ins != null)

ins.close();

return obj;

}

}

http://www.cnblogs.com/XL-Liang/archive/2013/03/22/2974987.html

总结

如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。

如您喜欢交流学习经验,点击链接加入交流1群:1065694478(已满)交流2群:163560250

java xmlutil_XmlUtil工具类(toxml()和toBean())相关推荐

  1. Hutool Java常用工具类汇总

    简介 Hutool是一个小而全的Java工具类库,通过静态方法封装,降低相关API的学习成本,提高工作效率,使Java拥有函数式语言般的优雅,让Java语言也可以"甜甜的". Hu ...

  2. UrlUtils工具类,Java URL工具类,Java URL链接工具类

    UrlUtils工具类,Java URL工具类,Java URL链接工具类 >>>>>>>>>>>>>>>&g ...

  3. Java并发工具类(闭锁CountDownLatch)

    并发工具类系列: Java并发工具类(闭锁CountDownLatch) Java并发工具类(栅栏CyclicBarrier) Java并发工具类(信号量Semaphore) 闭锁是一种同步工具类,可 ...

  4. java日期工具类DateUtil

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. DateUtil类 [java] view plain copy package com.util; ...

  5. Java常用工具类StringUtils的常用方法

    Java常用工具类StringUtils的常用方法 1.该工具类是用于操作Java.lang.String类的. 2.StringUtils类在操作字符串是安全的,不会报空指针异常,也正因此,在操作字 ...

  6. 组织机构代码和统一社会信用代码校验规则以及java校验工具类

    组织机构代码 编码规则编辑 1.全国组织机构代码由八位数字(或大写拉丁字母)本体代码和一位数字(或大写拉丁字母)校验码组成. 本体代码采用系列(即分区段)顺序编码方法. 校验码按照以下公式计算: C9 ...

  7. 彻底理解Java并发:Java并发工具类

    本篇内容包括:Java 并发工具类的介绍.使用方式与 Demo,包括了 CountDownLatch(线程计数器).CyclicBarrier(回环栅栏).Semaphore(信号量) 以及 Exch ...

  8. java 系统工具类 查询内存 CPU 系统基本信息 SysInfoUtils

    java 系统工具类 查询内存 CPU 系统基本信息 SysInfoUtils maven依赖 <dependency><groupId>com.github.oshi< ...

  9. Java并发工具类(三)Exchanger

    Java并发工具类(三)Exchanger 在J.U.C并发包中提供了一些工具类,可以供我们在日常的开发中,根据不同的情况去进行一些相关的并发控制,具体的类有: CountDownLatch Sema ...

最新文章

  1. 关于js选项卡的一些问题
  2. 小程序~WeUI下载使用
  3. Spring的AOP原理
  4. 原生态HTML文件上传与下载
  5. JAVA入门级教学之(方法-1)
  6. 华为lab-rs-v1-2.9_OSPF区域34
  7. 远程桌面控制软件Teamviewer免费版安装
  8. 从全班同学的成绩中找出最高成绩(遍历一位数组)
  9. SameSite Cookie支持的浏览器版本
  10. python项目实战:实现王者荣耀敏感词汇过滤器
  11. booktest-17 自定义过滤器 模板标签没有除法和取余函数
  12. echarts 图例 两行展示
  13. python绘制网络拓扑_python画网络拓扑图
  14. Python 神器!自动识别文字中的省市区并绘图
  15. 华为智慧屏和鸿蒙系统对比,华为s55和v55i对比_华为智慧屏s55和v55i哪个好
  16. Mac OS X下快速复制文件路径
  17. 2020-11-17最小转弯半径计算
  18. 金融银行产品培训推广PPT模板-优页文档
  19. window系统下avos cloud 云引擎搭建问题(Node.js)
  20. อยากจะรวยต้องเล่นคาสิโนออนไลน์ผ่านมือถือ

热门文章

  1. alidata mysql 卸载_mysql相关(一)、基本知识
  2. 网络里有陌生计算机,怎样使用陌生电脑安全上网
  3. ubuntu安装arm-linux-gcc
  4. java stringjoiner_java-为什么我们已经拥有StringBuilder时使用StringJoiner?
  5. java using的用法_using的几种用法 C#
  6. 服务器虚拟化的主备,云服务器可以主备切换
  7. html实现验证码效果,js实现验证码功能
  8. tigervnc远程控制linux,CentOS 6.8 安装TigerVNC 实现 Linux 远程桌面(示例代码)
  9. 排序算法(6)----计数排序
  10. linux结构体大小端,【转】位结构体+大小端模式