java---- XMLEncoder 和 XMLDecoder 和 xSteam工具使用
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... }