java对象与xml相互转换工具类
public class XmlHelper {
/**
* Object转XML
*
* @param object
* @return
* @throws Exception
*/
public static String ObjectToXml(Object object) throws Exception {
JAXBContext context = JAXBContext.newInstance(object.getClass()); // 获取上下文对象
Marshaller marshaller = context.createMarshaller(); // 根据上下文获取marshaller对象
marshaller.setProperty(Marshaller.JAXB_ENCODING, "GB2312"); // 设置编码字符集
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true); // 格式化XML输出,有分行和缩进
ByteArrayOutputStream baos = new ByteArrayOutputStream();
marshaller.marshal(object, baos);
String xmlObj = new String(baos.toByteArray()); // 生成XML字符串
return xmlObj.trim();
}
/**
* Object转XML
*
* @param object
* @return
* @throws Exception
*/
public static String ObjectToXmlUtf8(Object object) throws Exception {
JAXBContext context = JAXBContext.newInstance(object.getClass()); // 获取上下文对象
Marshaller marshaller = context.createMarshaller(); // 根据上下文获取marshaller对象
marshaller.setProperty(Marshaller.JAXB_ENCODING, "UTF-8"); // 设置编码字符集
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true); // 格式化XML输出,有分行和缩进
ByteArrayOutputStream baos = new ByteArrayOutputStream();
marshaller.marshal(object, baos);
String xmlObj = new String(baos.toByteArray()); // 生成XML字符串
return xmlObj.trim();
}
/**
* XML转Object
*
* @param xmlStr
* @param classz
* @return
*/
public static Object XmlToObject(String xmlStr, Class classz) {
try {
JAXBContext context = JAXBContext.newInstance(classz);
Unmarshaller unmarshaller = context.createUnmarshaller();
Object object = unmarshaller.unmarshal(new StringReader(xmlStr));
return object;
} catch (JAXBException ex) {
ex.printStackTrace();
return null;
}
}
/**
* xml格式字符串获取所有子节点存入list,每个List分两个部分:name和value,中间用“:”隔开
*
* @param srcXml
* @return
*/
public static List<String> getListXML(String srcXml) {
//存储xml元素信息的容器
List<Leaf> elemList = new ArrayList<Leaf>();
List<String> list = new ArrayList<String>();
Document srcdoc = null;
try {
srcdoc = DocumentHelper.parseText(srcXml);
} catch (DocumentException e) {
e.printStackTrace();
}
Element elem = srcdoc.getRootElement();
getElementList(elem, elemList);
for (Iterator<Leaf> it = elemList.iterator(); it.hasNext(); ) {
Leaf leaf = it.next();
list.add(leaf.getName() + ":" + leaf.getValue());
}
return list;
}
/**
* 递归遍历方法
*
* @param element
*/
public static void getElementList(Element element, List<Leaf> elemList) {
List elements = element.elements();
if (elements.size() == 0) {
//没有子元素
//String xpath = element.getPath();
String xpath = element.getName();
String value = element.getTextTrim();
Leaf leaf = new Leaf(xpath, value);
elemList.add(leaf);
} else {
//有子元素
for (Iterator it = elements.iterator(); it.hasNext(); ) {
Element elem = (Element) it.next();
//递归遍历
getElementList(elem, elemList);
}
}
}
static class Leaf {
private String name;
private String value;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
public Leaf(String name, String value) {
this.name = name;
this.value = value;
}
}
}
java对象与xml相互转换工具类的更多相关文章
- JSON对象与XML相互转换工具类
依赖jar <dependency> <groupId>dom4j</groupId> <artifactId>dom4j</artifactId ...
- java对象与xml相互转换 ---- xstream
XStream是一个Java对象和XML相互转换的工具,很好很强大.提供了所有的基础类型.数组.集合等类型直接转换的支持. XStream中的核心类就是XStream类,一般来说,熟悉这个类基本就够用 ...
- 玩转Java对象和XML相互转换
最近在项目中一直出现Java对象和XML之间的相互转换,一开始由于项目很庞大,我又是临时调度过去,导致在按照项目组长的要求进行写代码的同时,总是在这块云里雾里,最近才慢慢开始搞清楚项目中具体的使用缘由 ...
- java自带的xml解析工具类
public class JaxbUtil { /** * java对象转换为xml文件 * * @param xmlPath xml文件路径 * @param load java对象.Class * ...
- java socket报文通信(三)java对象和xml格式文件的相互转换
前两节讲了socket服务端,客户端的建立以及报文的封装.今天就来讲一下java对象和xml格式文件的相互转换. 上一节中我们列举了一个报文格式,其实我们可以理解为其实就是一个字符串.但是我们不可能每 ...
- java对象与XML相互转化
起因 最近在公司做了一次webservice相关的任务,其中我最敢兴趣的就是webservice接受到XML对应的流以后是如何方便的转化成java对象,而java对象又是如何生成对应的XML的. 目的 ...
- 使用XStream注解实现Java对象与XML互相转换的代码示例
本文记录一下使用xstream这个api的注解特性对Java对象与XML字符串相互转换的一些代码示例. 我们很多人都处理过XML文件,也有很多非常成熟的第三方开源软件.如:jdom.dom4j等 ...
- 通过JAXB完成Java对象与XML之间的转换
Java对象转换XML的过程叫marshal. XML转换到Java对象的过程叫unmarshal. 一.Java对象转化为XML 这里省略getter和setter方法 通过标注@XMLRootEl ...
- JAVA对象和XML文档、原来他们之间还有这一出
最近项目开发中遇到一个问题,访问接口不再通过url地址请求的方式,而是 通过socket发送xml格式的报文到指定服务器来进行信息的统一认证.. 因此组装xml格式的报文字符串以及解析服务器返回的xm ...
随机推荐
- K8S调度之Taints and Tolerations
Taints和Tolerations(污点和容忍) 在<K8S之节点亲和性>中,我们说到的的NodeAffinity节点亲和性,是在pod上定义的一种属性,使得Pod能够被调度到某些nod ...
- Linux 下搭建 Svn+Apache
一.安装apache 1.检查apache是否安装 rpm -qa|grep httpd 2.使用yum安装apache yum -y install httpd 3.记住安装的版本号 httpd.x ...
- 转:SkipList跳表
http://kenby.iteye.com/blog/1187303 相关概念: 1.几何分布 http://baike.baidu.com/link?url=DdtNq6pCWIvr7onVBtE ...
- browser.versions.weixin
最近做很多HTML5的项目,很多页面会通过微信微博等SNS分享出去.在分享页面上提供公司APP的下载.但是在很多应用的浏览器中,点击下载链接无法下载应用.那么针对这些浏览器我们需要给用户提示从safa ...
- 20155210潘滢昊 2016-2017-2 《Java程序设计》第5周学习总结
20155210 2016-2017-2 <Java程序设计>第5周学习总结 教材学习内容总结 try with resources 关闭多个资源时用分号分隔 java.lang.Auto ...
- windows环境下git的环境变量配置
1.从官网下载git这个软件.msi格式,然后安装. 2.找到你的git的安装目录,并记录下来 3.配置环境变量:在path里加入—— ;你的git的安装目录\bin;你的git的安装目录\libe ...
- 34、Collections工具类简介
Collections工具类简介 就像数组中的Arrays工具类一样,在集合里面也有跟Arrays类似的工具类Collections package com.sutaoyu.Collections; ...
- 【译】第七篇 Integration Services:中级工作流管理
本篇文章是Integration Services系列的第七篇,详细内容请参考原文. 简介在上一篇文章,我们创建了一个新的SSIS包,学习了SSIS中的脚本任务和优先约束,并检查包的MaxConcur ...
- ispoweroftwo 判断2的次幂
首先结果是: public bool IsPowerOfTwo(int n) { if(n<1) return false;//2的次幂一定大于0 return ((n & (n -1) ...
- openjudge-NOI 2.5-1756 八皇后
题目链接:http://noi.openjudge.cn/ch0205/1756/ 题解: 上一道题稍作改动…… #include<cstdio> #include<algorith ...