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. 一、rollup

    参考:reduxreach-routerrollup-starter-librollup-starter-approller-clicreate-react-library 一.安装 npm inst ...

  2. adoop(四)HDFS集群详解

    阅读目录(Content) 一.HDFS概述 1.1.HDFS概述 1.2.HDFS的概念和特性 1.3.HDFS的局限性 1.4.HDFS保证可靠性的措施 二.HDFS基本概念 2.1.HDFS主从 ...

  3. 第三章· Redis消息队列

    一.生产消费模型 二.Redis发布消息的两种模式

  4. Eclipse 设置背景色

    window -> preferences ->  General -> Editors -> Test Editors -> Background color 勾掉Sy ...

  5. MySQL聚簇索引和非聚簇索引的对比

    首先要清楚:聚簇索引并不是一种单独的索引类型,而是一种存储数据的方式. 聚簇索引在实际中用的很多,Innodb就是聚簇索引,Myisam 是非聚簇索引. 在之前我想插入一段关于innodb和myisa ...

  6. B. Vova and Trophies 字符串预处理+思维+贪心

    题意:给出一个字符串 只有G和S  可以交换任意两个位置的字符一次 问 最长的G的长度是多少 思路:预处理字符串 把相同的G粘成一个G 记一下数量  字符串变为 GSSGSGGSGSSG 相邻有一个S ...

  7. 「CF1154F」Shovels Shop【背包DP】

    题目链接 [洛谷传送门] 题解 非常简单的背包. \(f[i]\)表示购买\(i\)个物品所需要最少的花费. 不考虑免费的限制条件,那么一定是选择前\(k\)个双鞋子. 那么加入免费的条件,那么还是要 ...

  8. Ubuntu16.04 安装g++6

    https://blog.csdn.net/qq_34877350/article/details/81182022 1.安装gcc-6: sudo apt-get update && ...

  9. 驱动调试(一)-printk

    目录 驱动调试(一)-printk 引入 框架 入口console_setup add_preferred_console register_console s3c24xx_serial_initco ...

  10. ACM-ICPC 2018 徐州赛区网络预赛 H Ryuji doesn't want to study (树状数组差分)

    https://nanti.jisuanke.com/t/31460 题意 两个操作.1:查询区间[l,r]的和,设长度为L=r-l+1, sum=a[l]*L+a[l+1]*(L-1)+...+a[ ...