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. ES 应用

    1. ES的不同之处:   全文检索.处理同义词.通过相关性给文档评分, 从同样的数据中生成分析与聚合数据, 实时大型批处理. 安装es与kibana 1.下载:https://www.elastic ...

  2. js01-javascript语法标准和数据类型

    语法规则 (1)JavaScript对换行.缩进.空格不敏感. 备注:每一条语句末尾要加上分号,虽然分号不是必须加的,但是为了程序今后要压缩,如果不加分号,压缩之后将不能运行. (2)所有的符号,都是 ...

  3. CodeSmith如何生成实体类 ,完善版

    <%-- Name: Database Table Properties Author: Paul Welter Description: Create a list of properties ...

  4. Jekins相关笔记

    Jekins忘记密码操作 https://blog.csdn.net/intelrain/article/details/78749635 Jekins重启 https://www.cnblogs.c ...

  5. RfcConfig 类 主要解决Tomcat 报 The valid characters are defined in RFC 7230 and RFC 3986

    tomcat 8.0以后对请求URL做了严格的过滤 就是严格按照 RFC 3986规范进行访问解析,而 RFC 3986规范定义了Url中只允许包含英文字母(a-zA-Z).数字(0-9).-_.~4 ...

  6. sgu438-The_Glorious_Karlutka_River

    Description SGU似乎死了... 题目搬到了Codeforces... Problem - 99999438 - Codeforces Solution 动态最大流. 考虑如果不求时间, ...

  7. UOJ10 UTR #1 pyx的难题(堆)

    显然优先级越高完成的越早,二分答案后用堆模拟就是O(nlog2n)的.考虑去一个log.先固定特殊题的优先级为最低,模拟一遍.这样在特殊题被扔过来到T的这段时间内,如果将特殊题的优先级提高至超过这其中 ...

  8. position:sticky

    使用sticky定位可以简洁的实现固定功能 例如,左右布局页面,左侧菜单,右侧内容,内容区域滚动时,不希望菜单区域滚动,而是固定不动 以往要实现这个功能,需要使用fixed定位菜单,菜单脱离文档流,布 ...

  9. idea搭建springboot

     1.创建新项目 2.继续项目配置 Name:项目名称Type:我们是Maven构建的,那么选择第一个Maven ProjectPackaging:打包类型,打包成Jar文件Java Version: ...

  10. 11.11CTF答案

    签到题                             flag{0ca175b9c0f726a831d895e269332461 } 下载WIN HEX,用WIN HEX打开“海贼王图片”, ...