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
原创粉丝点击