XMLEncoder:

将对象写入XML数据中

import org.dom4j.DocumentException;
import java.beans.XMLEncoder;
import java.io.*;
public class Demo{
public static void main(String[] args) throws IOException, DocumentException {
xmlEncoder();
}
//将对象写入XML文档中
private static void xmlEncoder() throws DocumentException, FileNotFoundException {
BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(new FileOutputStream("test.xml"));
XMLEncoder xmlEncoder = new XMLEncoder(bufferedOutputStream);
//实例化的类必须是public 否则会报错
Person person = new Person();
person.setAge("10");
person.setName("bin");
person.setId("p0");
xmlEncoder.writeObject(person);
xmlEncoder.close();
}
}

对象必须有public

public class Person {
private String name;
private String age;
private String id;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
@Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
", age='" + age + '\'' +
", id='" + id + '\'' +
'}';
}
}

  

XMLDecoder:

import org.dom4j.DocumentException;
import java.beans.XMLDecoder;
import java.io.*; public class Demo {
public static void main(String[] args) throws IOException, DocumentException {
xmlEncoder();
} //将对象从XML文档中读出来
private static void xmlEncoder() throws DocumentException, FileNotFoundException {
BufferedInputStream bufferedInputStream = new BufferedInputStream(new FileInputStream("test.xml"));
XMLDecoder xmlDncoder = new XMLDecoder(bufferedInputStream);
Person perosn = (Person) xmlDncoder.readObject();
System.out.println(perosn.getAge());
System.out.println(perosn.getName());
System.out.println(perosn.getId());
xmlDncoder.close();
}
}

  

xStream工具使用:

适合用作数据传输

下载xSream jar包

http://x-stream.github.io/download.html

下载依赖包 xpp3  jar包

http://www.extreme.indiana.edu/dist/java-repository/xpp3/distributions/

使用实例

做数据传输

import com.thoughtworks.xstream.XStream;
import com.thoughtworks.xstream.io.xml.Xpp3Driver; public class Demo {
public static void main(String[] args){
//适合用作数据传输
xStream();
}
private static void xStream(){
//生成xml数据
XStream xStream = new XStream(new Xpp3Driver());
//设置安全,不然会出现警告 Security framework of XStream not initialized, XStream is probably vulnerable
XStream.setupDefaultSecurity(xStream);
xStream.allowTypes(new Class[]{Person.class, Person.class}); Person person = new Person();
person.setId("p1");
person.setName("花花");
person.setAge("10");
//取别名
xStream.alias("person",Person.class);
//别名的属性用id来设置
xStream.useAttributeFor(Person.class,"id");
String xml = xStream.toXML(person);
System.out.println(xml); //解析xml数据
Person person1 = (Person) xStream.fromXML(xml);
System.out.println(person1);
}
}

  

利用xStream读取XML和写入XML

public class ProductClothesXML {
public static List<Clothes> parseclothesXML() {
List<Clothes> clothesList = new ArrayList<>();
XStream xStream = new XStream(new Xpp3Driver());
xStream.alias("list", clothesList.getClass());
xStream.alias("cloth", Clothes.class);
xStream.useAttributeFor(Clothes.class, "id");
BufferedInputStream bufferedInputStream = null;
try {
bufferedInputStream = new BufferedInputStream(new FileInputStream("cloth.xml"));
clothesList = (List<Clothes>) xStream.fromXML(bufferedInputStream);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
return clothesList;
}
public static void writeClothesXML(List<Clothes> clothesList) {
XStream xStream = new XStream(new Xpp3Driver());
xStream.alias("list", clothesList.getClass());
xStream.alias("cloth", Clothes.class);
xStream.useAttributeFor(Clothes.class, "id");
BufferedOutputStream bufferedOutputStream = null;
try {
bufferedOutputStream = new BufferedOutputStream(new FileOutputStream("cloth.xml"));
bufferedOutputStream.write("<?xml version=\"1.0\" encoding=\"UTF-8\" ?>".getBytes());
xStream.toXML(clothesList, bufferedOutputStream);
xStream.getClassLoader();
bufferedOutputStream.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}

cloth.xml

<?xml version="1.0" encoding="UTF-8" ?>

<list>
<cloth id="A01">
<brand>adidas</brand>
<color>白色</color>
<style>衬衫</style>
<size>s</size>
<num>10</num>
<price>100</price>
<description>棉</description>
</cloth>
<cloth id="A02">
<brand>adidas</brand>
<color>黑色</color>
<style>衬衫</style>
<size>s</size>
<num>20</num>
<price>100</price>
<description>棉</description>
</cloth>
<cloth id="A03">
<brand>adidas</brand>
<color>黑色</color>
<style>球鞋</style>
<size>M</size>
<num>20</num>
<price>500</price>
<description>运动</description>
</cloth>
</list>

Clothes类

public class Clothes implements Serializable {
private String id;
private String brand;
private String style;
private String color;
private String size;
private int num;
private float price;
private String description;
set...
get...
}

  

java---- XMLEncoder 和 XMLDecoder 和 xSteam工具使用的更多相关文章

  1. 关于XMLEncoder和XMLDecoder

    我们用XMLEncoder和XMLDecoder来序列化和反序列化一个类. 我觉得需要注意的是,我们在new一个对象的时候,XMLEncoder本身默认的是类中无参的构造函数,我今儿在实现的时候,老是 ...

  2. Java数组操作利器:Arrays工具类

    java.util.Arrays提供大量的工具方法来操作数组,这些方法全是静态方法. 1 便捷创建List public static <T> List<T> asList(T ...

  3. java 泛型深入之Set有用工具 各种集合泛型深入使用演示样例,匿名内部类、内部类应用于泛型探讨

    java 泛型深入之Set有用工具 各种集合泛型深入使用演示样例,匿名内部类.内部类应用于泛型探讨 //Sets.java package org.rui.generics.set; import j ...

  4. Java自带的性能监测工具用法简介——jstack、jconsole、jinfo、jmap、jdb、jsta、jvisualvm

    JDK内置工具使用 一.javah命令(C Header and Stub File Generator) 二.jps命令(Java Virtual Machine Process Status To ...

  5. 【转】15款Java程序员必备的开发工具

    如果你是一名Web开发人员,那么用膝盖想也知道你的职业生涯大部分将使用Java而度过.这是一款商业级的编程语言,我们没有办法不接触它. 对于Java,有两种截然不同的观点:一种认为Java是最简单功能 ...

  6. Java逆向武器库_反编译工具

    1.反编译工具之_jd-gui 官网下载地址:http://java-decompiler.github.io/#jd-gui-download 使用: 下载后解压直接使用即可. jd-gui的优势是 ...

  7. 15款Java程序员必备的开发工具(转)

    如果你是一名Web开发人员,那么用膝盖想也知道你的职业生涯大部分将使用Java而度过.这是一款商业级的编程语言,我们没有办法不接触它 对于Java,有两种截然不同的观点: 一种认为Java是最简单功能 ...

  8. Java判断不为空的工具类总结

    1.Java判断是否为空的工具类,可以直接使用.包含,String字符串,数组,集合等等. package com.bie.util; import java.util.Collection; imp ...

  9. Java对象序列化和反序列化的工具方法

    import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import ja ...

随机推荐

  1. setData优化过程

    https://blog.csdn.net/rolan1993/article/details/88106343 在做一个小球跟随手指移动的效果时候,由于在touchmove事件中频繁调用setDat ...

  2. redis哨兵(Sentinel)、虚拟槽分区(cluster)和docker入门

    一.Redis-Sentinel(哨兵) 1.介绍 Redis-Sentinel是redis官方推荐的高可用性解决方案,当用redis作master-slave的高可用时,如果master本身宕机,r ...

  3. Android短信备份及插入笔记

    实现备份短信到xml文件和像短信中插入一条数据 一.实现短信将备份到xml文件中 在布局文件中定义一个按钮,定义点击事件为copyClick MainActivity.java: package co ...

  4. 口胡FFT现场(没准就听懂了)&&FFT学习笔记

    前言(不想听的可以跳到下面) OK.蒟蒻又来口胡了. 自从ZJOI2019上Day的数论课上的多项式听到懵逼了,所以我就下定决心要学好多项式.感觉自己以前学的多项式都是假的. 但是一直在咕咕,现在是中 ...

  5. flex布局应用

    flex介绍  http://www.ruanyifeng.com/blog/2015/07/flex-grammar.html 了解了flex布局之后,发现其功能非常强大. 当指定一个div dis ...

  6. LoadRunner【第三篇】录制脚本实践:订票网站

    启动服务 安装好loadrunner,我们就可以实践了. loadrunner自带订票网站,可以方便我们练习, 先把下面两个发送到桌面快捷方式 首先,启动服务,点击下面图标(如果服务无法启动,检查端口 ...

  7. Dynamic Rankings ZOJ - 2112(主席树+树状数组)

    The Company Dynamic Rankings has developed a new kind of computer that is no longer satisfied with t ...

  8. 动态dp学习笔记

    我们经常会遇到一些问题,是一些dp的模型,但是加上了什么待修改强制在线之类的,十分毒瘤,如果能有一个模式化的东西解决这类问题就会非常好. 给定一棵n个点的树,点带点权. 有m次操作,每次操作给定x,y ...

  9. nginx安装访问

    依赖包安装: 安装gcc gcc-c++: yum -y install gcc gcc-c++ autoconf automake 安装pcre: yum -y install pcre pcre- ...

  10. 如何查看C++ dll位数

    使用VS自带工具 dumpbin dumpbin /headers xxx.dll