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>
本文介绍了一个使用Simple Framework XML进行Java对象序列化和反序列化的完整示例。示例中创建了Customer、Address、Order和Item等类,并通过CustomerTest类实现了对象到XML文件的转换及反向操作。
469

被折叠的 条评论
为什么被折叠?



