java simpleXml序列化反序列化小例子
来源:互联网 发布:尚观linux视频 百度云 编辑:程序博客网 时间:2024/05/20 23:36
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;@Rootpublic class Customer {//@Element(required = true) 默认为true//@Element(type = void.class) 默认为void @Element private String code;@Elementprivate String name;@Elementprivate 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;@Rootpublic class Address {@Elementprivate String code;@Elementprivate 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;@Rootpublic class Order {@Elementprivate String code;@Elementprivate 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;@Rootpublic class Item {@Elementprivate String code;@Elementprivate String name;@Elementprivate 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";//序列化,把对象转为xmlwrite(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>
0 0
- java simpleXml序列化反序列化小例子
- Java 对象序列化和反序化例子
- 对象序列化反序列化例子
- 对象序列化反序列化例子
- SimpleXml例子
- 关于Java序列化和反序列化的理解以及概念和例子
- java序列化/反序列化之xml、protobuf、protostuff 的比较与使用例子
- java序列化/反序列化之xstream、protobuf、protostuff 的比较与使用例子
- java序列化/反序列化之xstream、protobuf、protostuff 的比较与使用例子
- 一个例子,序列化与反序列化
- java序列化与反序列化
- Java序列化和反序列化
- java序列化与反序列化
- JAVA序列化及反序列化
- java序列化与反序列化
- java序列化与反序列化
- java 序列化 和反序列化
- Java序列化与反序列化
- 【页面】手机页面跳转的实现方法(三)——Fragment
- CloudFoundry Service 使用
- Qt Quick 事件处理之捏拉缩放与旋转
- ZigBee学习之17——ZStack 网络层API解读
- mysql的安装真不爽
- java simpleXml序列化反序列化小例子
- VS2010“起始页”不记录最近打开的工程——解决方案
- jquery过滤特殊字符',防sql注入
- vi/vim复制粘贴命令
- linux环境下 java调用c++的shared library(环境安装以及代码书写流程)
- 十大基础实用算法之归并排序和二分查找
- Bigip负载均衡器的问题汇总(1)
- 基于DM642的mpeg-2视频压缩编码之硬件结构
- 模板特殊化(Template specialization)