【XML】xStream浅录
XStream可以用来转换对象-XML,或者XML-对象。
官网地址:http://x-stream.github.io
小案例:
实体类
FileVo.java
package cn.pinnsvin.xml.vo;
import java.math.BigInteger;
import java.util.Date;
import java.util.List;
public class FileVo {
private String owner;
private Date createDate;
private Date lastUpdateDate;
private String authority;
private BigInteger size;
private String title;
private String content;
@Override
public String toString() {
return "FileVo [owner=" + owner + ", createDate=" + createDate + ", lastUpdateDate=" + lastUpdateDate
+ ", authority=" + authority + ", size=" + size + ", title=" + title + ", content=" + content + "]";
}
public String getOwner() {
return owner;
}
public void setOwner(String owner) {
this.owner = owner;
}
public Date getCreateDate() {
return createDate;
}
public void setCreateDate(Date createDate) {
this.createDate = createDate;
}
public Date getLastUpdateDate() {
return lastUpdateDate;
}
public void setLastUpdateDate(Date lastUpdateDate) {
this.lastUpdateDate = lastUpdateDate;
}
public String getAuthority() {
return authority;
}
public void setAuthority(String authority) {
this.authority = authority;
}
public BigInteger getSize() {
return size;
}
public void setSize(BigInteger size) {
this.size = size;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
}
FolderVo.java
package cn.pinnsvin.xml.vo;
import java.math.BigInteger;
import java.util.Date;
import java.util.List;
public class FolderVo {
private List<FileVo> files;
private List<FolderVo> folders;
private String owner;
private Date createDate;
private Date lastUpdateDate;
private String authority;
private BigInteger allSize;
private BigInteger usedSize;
@Override
public String toString() {
return "FolderVo [files=" + files + ", folders=" + folders + ", owner=" + owner + ", createDate=" + createDate
+ ", lastUpdateDate=" + lastUpdateDate + ", authority=" + authority + ", allSize=" + allSize
+ ", usedSize=" + usedSize + "]";
}
public List<FileVo> getFiles() {
return files;
}
public void setFiles(List<FileVo> files) {
this.files = files;
}
public List<FolderVo> getFolders() {
return folders;
}
public void setFolders(List<FolderVo> folders) {
this.folders = folders;
}
public String getOwner() {
return owner;
}
public void setOwner(String owner) {
this.owner = owner;
}
public Date getCreateDate() {
return createDate;
}
public void setCreateDate(Date createDate) {
this.createDate = createDate;
}
public Date getLastUpdateDate() {
return lastUpdateDate;
}
public void setLastUpdateDate(Date lastUpdateDate) {
this.lastUpdateDate = lastUpdateDate;
}
public String getAuthority() {
return authority;
}
public void setAuthority(String authority) {
this.authority = authority;
}
public BigInteger getAllSize() {
return allSize;
}
public void setAllSize(BigInteger allSize) {
this.allSize = allSize;
}
public BigInteger getUsedSize() {
return usedSize;
}
public void setUsedSize(BigInteger usedSize) {
this.usedSize = usedSize;
}
}
工具类
XStreamUtils.java
package cn.pinnsvin.xml.utils;
import java.io.File;
import com.thoughtworks.xstream.XStream;
import com.thoughtworks.xstream.io.xml.DomDriver;
import cn.pinnsvin.xml.vo.FileVo;
import cn.pinnsvin.xml.vo.FolderVo;
public class XStreamUtils {
private static XStream xStream;
static{
init();
}
public static void init(){
xStream = new XStream(new DomDriver());
xStream.registerConverter(new cn.pinnsvin.xml.utils.DateConverter("yyyyMMdd"));
myAlias();
}
public static void myAlias(){
xStream.alias("Folder", FolderVo.class);
xStream.alias("File", FileVo.class);
}
public static String objectToXML(Object object){
String xml = xStream.toXML(object);
return xml;
}
public static Object xmlToObject(String xml){
Object obj = xStream.fromXML(xml);
return obj;
}
public static Object xmlToObject(File file){
Object obj = xStream.fromXML(file);
return obj;
}
}
日期格式转换类
DateConverter.java
package cn.pinnsvin.xml.utils;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import com.thoughtworks.xstream.converters.ConversionException;
import com.thoughtworks.xstream.converters.Converter;
import com.thoughtworks.xstream.converters.MarshallingContext;
import com.thoughtworks.xstream.converters.UnmarshallingContext;
import com.thoughtworks.xstream.io.HierarchicalStreamReader;
import com.thoughtworks.xstream.io.HierarchicalStreamWriter;
public class DateConverter implements Converter{
private String format;
public DateConverter(String format) {
super();
this.format = format;
}
@Override
public boolean canConvert(Class clazz) {
return java.util.Date.class.isAssignableFrom(clazz);
}
@Override
public void marshal(Object source, HierarchicalStreamWriter writer, MarshallingContext context) {
java.util.Date date = (Date) source;
DateFormat formatter = new SimpleDateFormat(format);
writer.setValue(formatter.format(date));
}
@Override
public Object unmarshal(HierarchicalStreamReader reader,
UnmarshallingContext context) {
java.util.Date date = new Date();
DateFormat formatter = new SimpleDateFormat(format);
try {
date = formatter.parse(reader.getValue());
} catch (ParseException e) {
throw new ConversionException(e.getMessage(), e);
}
return date;
}
}
调用
package cn.pinnsvin;
import java.io.File;
import java.util.Date;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.List;
import cn.pinnsvin.xml.utils.XStreamUtils;
import cn.pinnsvin.xml.vo.FileVo;
import cn.pinnsvin.xml.vo.FolderVo;
import cn.pinnsvin.xml.vo.MyDate;
public class Main {
public static void main(String[] args) throws ParseException {
getS();
}
public static void getS() throws ParseException{
FolderVo folder = new FolderVo();
FileVo file = new FileVo();
FileVo file1 = new FileVo();
List<FileVo> files = new ArrayList();
file.setAuthority("读写");
file.setContent("XStream可以用来转换对象-XML,或者XML-对象。");
file.setTitle("xml解析");
file.setCreateDate(new SimpleDateFormat("yyyyMMdd").parse("20161125"));
file1.setAuthority("读");
file1.setContent("XStream可以用来转换对象-XML,或者XML-对象。");
file1.setTitle("xml解析之XStream");
files.add(file);
files.add(file1);
folder.setFiles(files);
folder.setAuthority("读写");
folder.setOwner("Pinnsvin");
folder.setCreateDate(new Date());
XStreamUtils streamUtils = new XStreamUtils();
System.out.println(streamUtils.objectToXML(folder));
FolderVo fd = (FolderVo)streamUtils.xmlToObject(new File("D:\\2.xml"));
System.out.println(fd.toString());
List<FileVo> fl = fd.getFiles();
// System.out.println(fl.toString());
}
}
输出
<Folder>
<files>
<File>
<createDate>20161125</createDate>
<authority>读写</authority>
<title>xml解析</title>
<content>XStream可以用来转换对象-XML,或者XML-对象。</content>
</File>
<File>
<authority>读</authority>
<title>xml解析之XStream</title>
<content>XStream可以用来转换对象-XML,或者XML-对象。</content>
</File>
</files>
<owner>Pinnsvin</owner>
<createDate>20171028</createDate>
<authority>读写</authority>
</Folder>
FolderVo [files=[FileVo [owner=null, createDate=Fri Nov 25 00:00:00 GMT+08:00 2016, lastUpdateDate=null, authority=读写, size=null, title=xml解析, content=XStream可以用来转换对象-XML,或者XML-对象。], FileVo [owner=null, createDate=null, lastUpdateDate=null, authority=读, size=null, title=xml解析之XStream, content=XStream可以用来转换对象-XML,或者XML-对象。]], folders=null, owner=Pinnsvin, createDate=Sat Oct 28 00:00:00 GMT+08:00 2017, lastUpdateDate=null, authority=读写, allSize=null, usedSize=null]
【XML】xStream浅录的更多相关文章
- 打造完美的xml技术解决方案(dom4j/xstream)
转: XML 技术是随着 Java 的发展而发展起来的.在 XML 出现之前对于简单的数据格式通常是存储在 ini 配置文件等文本文件中,复杂的格式则采用自定义的文件格式,因此对于每种文件格式都要有专 ...
- RCE via XStream object deserialization && SECURITY-247 / CVE-2016-0792 XML reconstruction Object Code Inject
catalogue . Java xStream . DynamicProxyConverter . java.beans.EventHandler . RCE via XStream object ...
- (转载)XML解析之-XStream解析
转载来源:http://hwy584624785.iteye.com/blog/1168680 本例使用XStream生成一个xml文件,再发序列化xml文件内容. XStream是一个简单的类库,可 ...
- android XMl 解析神奇xstream 三: 把复杂对象转换成 xml
前言:对xstream不理解的请看: android XMl 解析神奇xstream 一: 解析android项目中 asset 文件夹 下的 aa.xml 文件 android XMl 解析神奇xs ...
- android XMl 解析神奇xstream 二: 把对象转换成xml
前言:对xstream不理解的请看:android XMl 解析神奇xstream 一: 解析android项目中 asset 文件夹 下的 aa.xml 文件 1.Javabeen 代码 packa ...
- android XMl 解析神奇xstream 一: 解析android项目中 asset 文件夹 下的 aa.xml 文件
简介 XStream 是一个开源项目,一套简单实用的类库,用于序列化对象与 XML 对象之间的相互转换. 将 XML 文件内容解析为一个对象或将一个对象序列化为 XML 文件. 1.下载工具 xstr ...
- XStream 快速转换xml
项目地址:http://xstream.codehaus.org/tutorial.html (以下来源于官网) 1.Create classes to be serialized(初始化类) pub ...
- 使用XStream是实现XML与Java对象的转换(6)--持久化
九.持久化 在第八节的示例中,当我们操作一组对象时,我们可以指定Writer.OutputStream来写出序列化后的XML数据,我们还可以指定Reader.InputStream来读取序列化后的XM ...
- 使用XStream是实现XML与Java对象的转换(4)--转换器
七.转换器(Converter) 我们程序中的POJO是千变万化的,而且需求也是千奇百怪的,所以XStream中的内置的转换器的功能不一定能够满足我们的要求,所以我们就需要自己构建转换器. 1,一个基 ...
随机推荐
- Https系列之一:https的简单介绍及SSL证书的生成
Https系列会在下面几篇文章中分别作介绍: 一:https的简单介绍及SSL证书的生成二:https的SSL证书在服务器端的部署,基于tomcat,spring boot三:让服务器同时支持http ...
- 如何面试 PHP 工程师?
1,解决问题的能力和掌握的知识,看你招聘的目的而决定其二者的平衡.了解流体力学的确会对通下水道有很大帮助,但流体力学专家未必都会疏通下水道. 2,创造力,一个没有自己作品的程序员不是好程序员.编程跟写 ...
- tomcat部署在centos6.8上的乱码问题
web访问经常会莫名其妙的出现各种乱码问题.按照我自己的理解,设置一个charSet的过滤器,代码如下:import java.io.IOException; import javax.servlet ...
- UWP brush
---some words---- 1.Alpha:透明度 2.Argb :Alpha red green blue 3.brush: [brʌʃ] 刷子,笔画,笔刷 4.fore 前头 5.F ...
- jdbc与mybatis区别
jdbc的缺点: 1.频繁创建连接,浪费资源 2.SQL语句硬编码,不利于维护 3.传参是硬编码,不利于维护 4.结果集是硬编码,不利于维护 但是mybatis很好的解决了这些问题.
- VBA.NET 系统可行性分析模板
系统可行性分析 1. 技术可行性分析 前提: 系统不知在Window系统中,开发环境不受限制:系统以C/S结构为主,提供大量的数据操作:主要用VB.NET开发,提高安全性和访问效率. 基本要求 客户 ...
- ajax url参数中文乱码解决方法
较好的处理办法,对js的url中的中文参数值使用两次encodeURI(),即encodeURI(encodeURI("url的中文参数值")) JS代码: var name=&q ...
- 在项目中创建单元测试时junit的配置和使用
首先配置项目中AndroidMainfest.xml文件,加入 <instrumentation android:name="android.test.InstrumentationT ...
- SerialPort如何读取串口数据并显示在TextBox上,多线程委托
namespace SerialPort { public partial class Form3 : Form { delegate void UpdateTextEventHandler(stri ...
- AmCharts 对数据排序后展示
在官网看到的例子 给chart添加一个排序功能的handler AmCharts.addInitHandler( function(chart){ if (chart.orderByField === ...