java simpleXml序列化反序列化小例子
2014-06-18 09:50
357 查看
Customer.java
package com.fei; import java.util.ArrayList; import java.util.List; import org.simpleframework.xml.Element; import org.simpleframework.xml.ElementList; import org.simpleframework.xml.Root; @Root public class Customer { //@Element(required = true) 默认为true //@Element(type = void.class) 默认为void @Element private String code; @Element private String name; @Element private Address address; @ElementList(required = false,type = Order.class) private List<Order> orders = new ArrayList<Order>(); public Customer(){ super(); } public Customer(String code, String name, Address address, List<Order> orders) { super(); this.code = code; this.name = name; this.address = address; this.orders = orders; } public String getCode() { return code; } public void setCode(String code) { this.code = code; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Address getAddress() { return address; } public void setAddress(Address address) { this.address = address; } public List<Order> getOrders() { return orders; } public void setOrders(List<Order> orders) { this.orders = orders; } }
Address.java
package com.fei; import org.simpleframework.xml.Element; import org.simpleframework.xml.Root; @Root public class Address { @Element private String code; @Element private String name; public Address(){ super(); } public Address(String code,String name){ super(); this.code = code; this.name = name; } public String getCode() { return code; } public void setCode(String code) { this.code = code; } public String getName() { return name; } public void setName(String name) { this.name = name; } }
Order.java
package com.fei; import java.util.ArrayList; import java.util.Date; import java.util.List; import org.simpleframework.xml.Element; import org.simpleframework.xml.ElementList; import org.simpleframework.xml.Root; @Root public class Order { @Element private String code; @Element private Date date; @ElementList(required = false,type = Item.class) private List<Item> items = new ArrayList<Item>(); public Order(){ super(); } public Order(String code, Date date, List<Item> items) { super(); this.code = code; this.date = date; this.items = items; } public String getCode() { return code; } public void setCode(String code) { this.code = code; } public Date getDate() { return date; } public void setDate(Date date) { this.date = date; } public List<Item> getItems() { return items; } public void setItems(List<Item> items) { this.items = items; } }
Item.java
package com.fei; import org.simpleframework.xml.Element; import org.simpleframework.xml.Root; @Root public class Item { @Element private String code; @Element private String name; @Element private int quatity; public Item(){ super(); } public Item(String code, String name, int quatity) { super(); this.code = code; this.name = name; this.quatity = quatity; } public String getCode() { return code; } public void setCode(String code) { this.code = code; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getQuatity() { return quatity; } public void setQuatity(int quatity) { this.quatity = quatity; } }
CustomerTest.java
package test; import java.io.File; import java.util.ArrayList; import java.util.Date; import java.util.List; import org.simpleframework.xml.Serializer; import org.simpleframework.xml.core.Persister; import com.fei.Address; import com.fei.Customer; import com.fei.Item; import com.fei.Order; public class CustomerTest { public static void main(String[] args) throws Exception{ Customer customer = create(); String filePath = "d:/customerOrder.xml"; //序列化,把对象转为xml write(customer,filePath); //反序列化,xml转为对象 read(filePath); } private static Customer create(){ List<Item> items = new ArrayList<Item>(); Item item1 = new Item("apple","苹果",5); Item item2 = new Item("banana","香蕉",3); Item item3 = new Item("grape","葡萄",6); items.add(item1); items.add(item2); items.add(item3); List<Order> orders = new ArrayList<Order>(); Order order1 = new Order("order001",new Date(),items); orders.add(order1); Address address = new Address("888888","深圳科技园xx"); Customer customer = new Customer("1001","张三",address,orders); return customer; } private static void write(Customer customer,String filePath) throws Exception{ File file = new File(filePath); Serializer serializer = new Persister(); serializer.write(customer,file); } private static void read(String filePath) throws Exception{ File file = new File(filePath); Serializer serializer = new Persister(); Customer customer = serializer.read(Customer.class, file); print(customer); } private static void print(Customer customer){ System.out.println("--"+customer.getCode()); System.out.println("--"+customer.getName()); System.out.println("--"+customer.getAddress().getName()); for(Order order : customer.getOrders()){ System.out.println("----"+order.getCode()); System.out.println("----"+order.getDate()); for(Item item : order.getItems()){ System.out.println("------"+item.getCode()); System.out.println("------"+item.getName()); System.out.println("------"+item.getQuatity()); } } } }
运行结果:
--1001
--张三
--深圳科技园xx
----order001
----Wed Jun 18 09:37:30 CST 2014
------apple
------苹果
------5
------banana
------香蕉
------3
------grape
------葡萄
------6
生成的customerOrder.xml文件
<customer> <code>1001</code> <name>张三</name> <address> <code>888888</code> <name>深圳科技园xx</name> </address> <orders class="java.util.ArrayList"> <order> <code>order001</code> <date>2014-06-18 09:37:30.114 CST</date> <items class="java.util.ArrayList"> <item> <code>apple</code> <name>苹果</name> <quatity>5</quatity> </item> <item> <code>banana</code> <name>香蕉</name> <quatity>3</quatity> </item> <item> <code>grape</code> <name>葡萄</name> <quatity>6</quatity> </item> </items> </order> </orders> </customer>
相关文章推荐
- 关于Java序列化和反序列化的理解以及概念和例子
- java序列化/反序列化之xstream、protobuf、protostuff 的比较与使用例子
- java序列化/反序列化之xml、protobuf、protostuff 的比较与使用例子
- java序列化/反序列化之xml、protobuf、protostuff 的比较与使用例子
- java序列化/反序列化之xstream、protobuf、protostuff 的比较与使用例子
- java序列化/反序列化之xstream、protobuf、protostuff 的比较与使用例子
- java序列化/反序列化之xstream、protobuf、protostuff 的比较与使用例子
- Avro - 简单介绍,Java版 - 序列化与反序列化官方例子
- java中的序列化和反序列化
- java io (六) 对象序列化,反序列化 -- Serializable接口
- java序列化和反序列化到底怎么回事?
- 看JAVA序列化的性能 -- 一个简单的例子
- Java对象序列化和反序列化
- java序列化(Serializable)的作用和反序列化
- java序列化(Serializable)的作用和反序列化
- Java对象的序列化和反序列化实践
- java 序列化及反序列化
- Java对象的序列化和反序列化
- JAVA语言序列化和反序列化
- java之对象序列化和反序列化